Webpack 2.4.1を使用しています。
entry pointを、実際に存在しているファイルを元に自動決定したいため、
globをglob.sync→forEachでobjectに変換して渡しています。
javascript
1entry: () => { 2 const a = {}; 3 glob.sync('./b/**/[^_*]*.js').forEach(c => { 4 entries[c.replace('./b/', '').replace(/\.[a-z]+$/, '')] = c; 5 }); 6 return a; 7}, 8output: { 9 filename: '[name].js', 10 path: path.resolve(__dirname, 'js') 11},
watchモードのwebpack実行時点で存在するファイルについては、問題なく監視対象になるのですが、
webpackには静的なオブジェクトとして渡っているので、実行中に追加されたファイルを検出しません。
(監視対象からimportされた新規ファイルは検出されますが)
ファイル追加の度に手動でwebpackを再起動するのが手間なので、
監視外だがglobパターンにマッチするファイルが追加された際に、entryの項目を更新するか、
稼働しているwebpack+BrowserSyncを一旦停止し、
所定のnpm scriptsを再実行のようなことはできればと思いますが、実現は可能でしょうか?
webpack上では公式のドキュメントでDynamic entryの記載がありましたが、
内容が薄いため参考にならず…
https://webpack.js.org/configuration/entry-context/#dynamic-entry
内部プラグインでそれっぽい箇所を見つけるも、分からず…
https://github.com/webpack/webpack/pull/3634
https://github.com/webpack/webpack/blob/028c51301733836abbedc88be7483af2623f5943/lib/DynamicEntryPlugin.js
上記に挙げた以外のアプローチでも構いませんので、
どなたかアドバイスいただけますと幸いです!
あなたの回答
tips
プレビュー