如何移动' babel-runtime进入webpack供应商DLL?

时间:2016-05-06 20:28:48

标签: webpack babeljs

我创建了两个webpack包:vendors.dll.jsclient.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

如果需要解决问题,请尽快提供实际配置。

1 个答案:

答案 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
]