配置参考
Farm 默认从项目根目录的 farm.config.ts|js|mjs 文件中读取配置,配置文件示例:
farm.config.ts
import { defineConfig } from "@farmfe/core";
export default defineConfig({
root: process.cwd(), // 编译的根目录
// 编译选项
compilation: {
// ...
},
// Dev Server 选项
server: {
hmr: true,
// ...
},
// 插件配置
plugins: [],
});
编译选项 - compilation
所有与编译相关的配置都在 compilation 字段下。
input
- type:
Record<string, string>
项目的入口点。 Input 的文件可以是html、ts/js/tsx/jsx、css 或通过插件支持的其他文件。
import { defineConfig } from "@farmfe/core";
export default defineConfig({
compilation: {
input: {
index: "./index.html",
about: "./about.html",
},
},
// ..
};
output
- type:
OutputOptions
interface OutputOptions {
// 局部打包后,入口文件所在资源的文件名配置
entryFilename?: string;
// 局部打包后,除入口资源外的其他资源输入文件名配置
filename?: string;
// 输入目录
path?: string;
// public path:资源加载前缀
publicPath?: string;
// 静态资源文件名配置
assetsFilename?: string;
// 目标执行环境,浏览器或者 Node
targetEnv?: "browser" | "node";
// 输出模块格式
format?: "cjs" | "esm";
}
备注
我们称编译结果为 资源(resource)
output.entryFilename
- 默认值:
"[entryName].[ext]"
配置入口资源的文件名:您可以使用 [entryName] 等占位符。 所有占位符如下:
[entryName]:入口名,例如对于input: { index: "./index.html" },[entryName]为index[resourceName]:资源的名称,一般是 Farm 内部生成的一个独特哈希值。[contentHash]:该资源的内容哈希。[ext]:该资源的扩展名,对于js/jsx/ts/tsx为js,对于css/scss/less为css。
output.filename
- 默认值:
"[resourceName].[ext]"
局部打包后,除 entryFilename 配置的资源外的其他资源文件名. 所有占位符如下:
[resourceName]:资源的名称,一般是 Farm 内部生成的一个独特哈希值。[contentHash]:该资源的内容哈希。[ext]:该资源的扩展名,对于js/jsx/ts/tsx为js,对于css/scss/less为css。
output.path
- 默认值:
"dist"
输出资源的目录
output.publicPath
- 默认值:
"/"
资源 url 加载的前缀. 比如 URL https://xxxx,或者一个路径 /xxx.
output.assetsFileName
- 默认值:
"[resourceName].[ext]"
静态资源输出的文件名配置,占位符和 output.filename 相同。
output.targetEnv
- 默认值:
"browser"
配置产物的执行环境,可以是 "browser" 或者 "node".
output.format
- 默认值:
"esm"
配置产物的格式,可以是 "esm" 或者 "cjs".
备注
该选项只对 Js 产物有效
resolve
- type:
ResolveOptions
interface ResolveOptions {
extensions?: string[];
alias?: Record<string, string>;
mainFields?: string[];
conditions?: string[];
symlinks?: boolean;
strictExports?: boolean;
}
resolve.extensions
- 默认值:
["tsx", "ts", "jsx", "js", "mjs", "json", "html", "css"]
配置解析依赖时的后缀,例如解析 ./index 时,如果没有解析到,则会自动加上后缀解析,如尝试 ./index.tsx, ./index.css 等。
resolve.alias
- 默认值:
{}
配置解析别名,示例:
export default defineConfig({
compilation: {
resolve: {
alias: {
"/@": path.join(process.cwd(), "src"),
stream$: "readable-stream",
},
},
},
});