2017-01-16 6 views
0

webpackの複数のエントリパスを設定しているときにregexをパスに使用するにはどうすればよいですか?webpackの複数のエントリポイントを作成しているときのエントリパスの正規表現

ディレクトリが

webpack.config.js 

./javascripts/plugins/Alpha/plugin.js 
./javascripts/plugins/Beta/plugin.js 
./javascripts/plugins/Charlie/plugin.js 
./javascripts/plugins/Delta/plugin.js 
... 

私はこのような出力にしたいですか?

./build/resources/plugins/Alpha/Create/plugin.js 
./build/resources/plugins/Beta/plugin.js 
./build/resources/plugins/Charlie/plugin.js 
./build/resources/plugins/Delta/plugin.js 
... 

は私が設定

{ 
entry: { 
    "Alpha": "./resources/plugins/Alpha/plugin", 
    "Beta": "./resources/plugins/Beta/plugin", 
    "Charlie": "./resources/plugins/Charlie/plugin", 
    "Delta": "./resources/plugins/Delta/plugin" 
}, 
output: { 
    filename: "[name]/plugin.js", 
    path: "./build/resources/plugins" 
}, 
module: { 
    loaders: [ 
     {test: /\.js$/, loaders: ["babel-loader"]} 
    ] 
} 

}

の下にこれをすることによって達成することができる午前しかし、問題がある、私のディレクトリ構造が同じであっても、私は新しいエントリを作成する必要がありますentryキーで、新しいプラグインを追加した場合。このように私のwebpack.config.jsは成長を続けます。 私は、入力と出力ディレクトリ内のパターンを見ることができます

入力:./javascripts/plugins/[pluginName]/plugin.js

出力:./build/resources/plugins/[pluginName]/plugin.js

私はパス内の任意の正規表現を書くことで同じだけ達成することができますどのような方法がありますか?

+0

[webpackのエントリでワイルドカードマッピングを追加する方法](http://stackoverflow.com/questions/32874025/how-to- add-wildcard-mapping-in-webpack) –

+0

上記のリンクと同様に、これは 'glob'を使って解決できます。 Webpackが独自に提供しているものがあれば、私は考えていました。 –

答えて

0

fsを使用すると、ディレクトリをスキャンしてエントリオブジェクトを動的に作成できます。それが私の行いなのです。 (私はあなたがこの時点でノードを使用していると仮定しています)。

const fs = require('fs'); 
const entryMap = {}; 

fs.readdirSync('./src/app/pages/') 
    .filter(file => { 
     return file.match(/.*\.js$/); 
    }) 
    .forEach(f => { 
     entryMap[f.replace(/\.js$/, '')] = ['./pages/' + f]; 
    });