跳到主要内容
版本:1.0.0

DevServer 配置 - server

配置 Farm Dev Server 的行为。示例:

import type { UserConfig } from "@farmfe/core";

function defineConfig(config: UserConfig) {
return config;
}

export default defineConfig({
// 所有 dev server 选项都在 server 下面
server: {
port: 9000,
// ...
},
});

类型:

export interface UserServerConfig {
port?: number;
// https?: boolean;
protocol?: "http" | "https";
hostname?: string;
// http2?: boolean;
hmr?: boolean | UserHmrConfig;
proxy?: Record<string, ProxiesOptions>;
strictPort?: boolean;
open?: boolean;
host?: string;
cors?: boolean | cors.Options;
// whether to serve static assets in spa mode, default to true
spa?: boolean;
plugins?: DevServerPlugin[];
writeToDisk?: boolean;
}

port

  • 默认值: 9000

DevServer 监听的端口。

hmr

  • 默认值: 对于 start 命令是 true,其他命令是 false

启用 HMR,开启后启用 HMR 能力,将会监听编译过程中涉及到的模块的变动,当模块变化时,自动触发重编译并将结果推送给 Farm Runtime 进行更新。也可以通过一个对象来配置 HMR,例如:

import type { UserConfig } from '@farmfe/core';

function defineConfig(config: UserConfig) {
return config;
}

export default defineConfig({
// 所有 dev server 选项都在 server 下面
server: {
hmr: {
// 配置 web socket 监听的端口
port: 9802
// 配置 web socket 监听的 host
host: 'localhost',
// 配置文件监听时,忽略的文件
ignores: ['auto_generated/*']
}
// ...
}
});

hmr.port

  • 默认值: 9801

Web Socket 服务器监听的端口

hmr.host

  • 默认值: localhost

Web Socket 服务器监听的 Host

proxy

  • 默认值: undefined

配置服务器代理。基于 http-proxy 实现,具体选项参考其文档,示例:

import type { UserConfig } from "@farmfe/core";

function defineConfig(config: UserConfig) {
return config;
}

export default defineConfig({
server: {
proxy: {
"/api": {
target: "https://music-erkelost.vercel.app/banner",
changeOrigin: true,
pathRewrite: (path: any) => path.replace(/^\/api/, ""),
},
},
},
});

open

  • 默认值: false

编译完成后自动打开浏览器到对应的页面。

host

  • 默认值: localhost

Dev Server 监听的 host。

plugins

  • 默认值: []

配置 Farm 的 Dev Server 插件,通过 Dev Server 插件可以扩展 DevServer 的上下文,添加 middleware 等。插件就是一个函数,插件示例如下:

export function hmrPlugin(devServer: DevServer) {
const { config, logger } = devServer;
if (config.hmr) {
devServer.ws = new WebSocketServer({
port: config.hmr.port,
host: config.hmr.host,
});
devServer.app().use(hmr(devServer));
devServer.hmrEngine = new HmrEngine(
devServer.getCompiler(),
devServer,
logger
);
}
}

然后将该插件配置到 server.plugins 中。

Extremely Fast Web Build Tool Written in Rust

Copyright © 2024 Farm Community. Built with Docusaurus.