我正在将SplitChunksPlugin
webpack 应用到我的服务中。
喜欢,
...
optimization: {
splitChunks: {
chunks: 'all'
}
}
并且出现了一些问题。在讨论这些问题之前,我将介绍我的服务的缩小结构。
- Web 服务带来了几个
script
. 例如,
<script crossorigin type="module" src="/js/global.[chunkhash].js"></script>
<script crossorigin type="module" src="/js/main.[chunkhash].js"></script>
(我正在使用menifest.json
)
global.js
就像_
import _ from 'lodash';
Object.assign(window, { _ });
main.js
就像_
... other codes
_.add(10, 20); // using lodash that is assigned globally in global.js
而已。实际结构更复杂。所以,现在是问题。
- 当我不使用
splitChunks
or 设置splitChunks.chunks
为async
时,没有问题。但是当我将 设置为splitChunks.chunks
时all
,浏览器中会显示以下问题。
_ is not defined
如果我_
在浏览器的控制台中输入,则_
存在。
- 所以,为了找出发生了什么,我
console.log
插入global.js
喜欢
import _ from 'lodash';
Object.assign(window, { _ });
console.log(_, window);
何时显示console.log
日志,splitChunks.chunks = 'async'
但何时不显示splitChunks.chunks = 'all'
。
- 现在,我尝试导入所有供应商,例如
/* vendors */
<script type="text/javascript" src="/js/vendors~global.[chunkhash].js"></script>
<script type="text/javascript" src="/js/vendors~main~otherjs.[chunkhash].js"></script>
/* // vendors */
<script crossorigin type="module" src="/js/global.[chunkhash].js"></script>
<script crossorigin type="module" src="/js/main.[chunkhash].js"></script>
html 有上面的行,但是当我在 devtool 中看到网络选项卡时,没有供应商的 javascript 文件。
我很难申请,splitChunksPlugin
但这并不容易......而且我找不到一点线索......
这对任何答案或想法都会有很大帮助!谢谢。