我们有一个相当简单的 app/webpack 设置,如下所示:
babel.config.js
module.exports = {
plugins: [...],
presets: [
['@babel/preset-env', {
useBuiltIns: 'entry',
corejs: '3'
}]
]
}
index.js
import './polyfill';
import app from './app';
app();
polyfill.js
import 'core-js/stable';
import 'whatwg-fetch';
webpack.config.js
entry: {
bundle: [pathToIndexJs]
}
optimization: {
runtimeChunk: false,
splitChunks: {
cacheGroups: {
commons: {
test: /[\\/]node_modules[\\/]/,
name: 'vendors',
chunks: 'all'
}
}
}
}
我们最终得到的是两个块,bundle
并且vendors
. 奇怪的是whatwg-fetch
(and core-js
) 并没有以一个块的形式结束。当我创建一个构建并输出一个 stats.json 文件并使用Webpack Analyze对其进行分析时,我在模块列表 (./node_modules/whatwg-fetch/fetch.js) 中看到了该模块,但它的块列是空的。我已经通过搜索捆绑代码验证了它不会在任何一个块/捆绑中结束。
如果我将 polyfill 添加到entry.bundle
数组的开头,这个问题就得到了解决,但我想知道为什么它不首先包含在包中,因为它是一个正常的应用程序导入?我希望它出现在vendors
包中,因为它是一个 node_module。