我创建了两个webpack包:vendors.dll.js
和client.js
。
使用webpack.DllPlugin创建供应商。它包括node_modules/
中的所有前端模块。这很有效。
客户端包含我的应用代码。它使用webpack.DllReferencePlugin委托给供应商的DLL。这很有效。
客户端通过babel-loader
运行所有javascript。我正在使用babel-plugin-transform-runtime
插件,这会导致整个core-js内容被编译到我的客户端包中。我更喜欢将这些内容移到DLL中,因为它不会像应用程序一样频繁地更改。
AFAIK你不能只在DLL中包含babel-runtime
(我试过这个)。据我所知,core-js的内容被更直接地加载,而babel-runtime甚至没有我能说出的main
。
巴别塔:6.x Webpack:1.x
如果需要解决问题,请尽快提供实际配置。
答案 0 :(得分:1)
您可以扫描所需的目录并包含所有这样的文件。
const readDir = dir => {
const result = [];
fs.readdirSync(dir).map(file => {
if (file.match(/\.js$/)) result.push(`${dir.replace('./node_modules/', '')}/${file}`);
else if (fs.lstatSync(dir + '/' + file).isDirectory()) result.push(...readDir(dir + '/' + file));
});
return result
}
const babelRuntimeHelpers = readDir('./node_modules/babel-runtime/helpers');
const babelRuntimeCoreJs = readDir('./node_modules/babel-runtime/core-js');
然后将这些添加到您的供应商数组中:
vendor: [
...babelRuntimeHelpers,
...babelRuntimeCoreJs,
...rest
]