配置文件类型
webpackjsorg-main配置参考
配置文件类型
除了导出一个单独的配置对象,还有几种其他方式可以满足不同需求。
导出一个函数
最终你会在 webpack.config.js 中区分开发和生产构建,这有多种实现方式。其中一种是从 webpack 配置中导出一个函数,而不是导出一个对象。该函数将被调用并接收两个参数:
- 第一个参数是环境(environment)。语法示例请参见 CLI 环境选项文档。
- 第二个参数是选项映射(
argv)。它描述了传给 webpack 的选项,包含诸如output-path和mode等键。
diff
-export default {
+export default function(env, argv) {
+ return {
+ mode: env.production ? 'production' : 'development',
+ devtool: env.production ? 'source-map' : 'eval',
plugins: [
new MinimizerPlugin({
minimizerOptions: {
+ compress: argv.mode === 'production' // only if `--mode production` was passed
}
})
]
+ };
};
导出一个 Promise
webpack 会运行配置文件导出的函数,并等待其返回一个 Promise。当你需要异步加载配置变量时,这会很有用。
提示: 可以通过将它们包装在
Promise.all([/* 你的 Promise */]).中来导出多个 Promise。
js
export default () =>
new Promise((resolve, reject) => {
setTimeout(() => {
resolve({
entry: "./app.js",
/* ... */
});
}, 5000);
});
警告: 只有在通过 CLI 使用 webpack 时,返回
Promise才有效。webpack()需要的是一个对象。
导出多个配置
除了导出一个单独的配置对象/函数,你也可以导出多个配置(从 webpack 3.1.0 开始支持多个函数)。运行 webpack 时,所有配置都会被构建。例如,这对于针对多个目标(targets)(如 AMD 和 CommonJS)打包一个库非常有用:
js
export default [
{
output: {
filename: "./dist-amd.js",
libraryTarget: "amd",
},
name: "amd",
entry: "./app.js",
mode: "production",
},
{
output: {
filename: "./dist-commonjs.js",
libraryTarget: "commonjs",
},
name: "commonjs",
entry: "./app.js",
mode: "production",
},
];
提示: 如果你向
--config-name标志传入一个名称,webpack 将只构建那个特定的配置。
dependencies
如果你的某个配置依赖于另一个配置的输出,可以使用 dependencies 数组来指定依赖列表。
webpack.config.js
js
export default [
{
name: "client",
target: "web",
// …
},
{
name: "server",
target: "node",
dependencies: ["client"],
},
];
parallelism
如果你导出多个配置,可以使用配置数组上的 parallelism 选项来指定最多可并行编译的编译器数量。
- 类型:
number - 可用版本:5.22.0+
webpack.config.js
js
const config = [
{
// config-1
},
{
// config-2
},
];
config.parallelism = 1;
export default config;
帮助我们改进文档
发现翻译问题或内容错误?请告诉我们。
