我遵循了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
捆绑包。