我们使用 Webpack DefinePlugin 为不同的渲染模式生成输出包。例如,我们的 webpack 配置将返回
[{
entry: {
mode1: "./input.es6",
},
output: {
path: path.join(__dirname, 'dist'),
filename: "[name]-bundle.js",
},
plugins: [
new webpack.DefinePlugin({
__RENDER_MODE__: 'mode1',
}))
]
},{
entry: {
mode2: "./input.es6",
},
output: {
path: path.join(__dirname, 'dist'),
filename: "[name]-bundle.js",
},
plugins: [
new webpack.DefinePlugin({
__RENDER_MODE__: 'mode2',
}))
]
}]
在代码中我们将做
if (__RENDER_MODE__ === 'mode1') {
require('jquery-ui')
}
if (__RENDER_MODE__ === 'mode2') {
require('other-lib')
}
这使我们能够为每种渲染模式生成更优化的包。然而,随着渲染模式的增加,我们正在运行多个 webpack 编译,大大减慢了编译过程。我对解决这个问题有一些想法,并希望听到更多的意见:
有没有办法使用 1 个单一的 webpack 编译并在编译完成后定义插件替换?因此,我们无需在编译时让 DefinePlugin 替换变量,而是只编译一次,然后再进行替换。
或者,有没有办法按条目定义插件?每个条目都有一个单独的 DefinePlugin 配置。