如何防止webpack DefinePlugin更改供应商bundle文件名



我遵循了webpack缓存指南,现在我有三个捆绑包:main、runtime和vendor。

然而,在我的webpack.config.js中,我使用DefinePlugin将package.jsonversion导出到UI,如下所示:

new DefinePlugin({
'process.env': {
VERSION: JSON.stringify(`v${packageJSON.version}`)
}
}),

这导致我的供应商捆绑包文件名随着UI的每次发布而更改。

如何将使用DefinePlugin定义的全局变量放入主捆绑包?

发现问题出在用DefinePlugin定义的密钥上:'process.env'

我们没有阅读插件警告框,所以webpack用我们的对象替换了第三方库中每次出现的process.env。由于我们还包括了应用程序版本,因此每个版本的vendors.*.js捆绑包都不同。

通过将process.env重命名为env(并相应地更改我们的代码(,无论我们的应用程序版本如何,webpack现在都能够生成相同的vendors.*.js捆绑包。

最新更新