2016-05-06 4 views
5

私は2つのWebpackバンドルを作成しています:vendors.dll.jsclient.jsです。babel-runtimeをwebpackベンダーDLLに '移動する'方法は?

ベンダーは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

必要なディレクトリをスキャンし、このようなすべてのファイルを含めることができます。

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 
] 
関連する問題