問題
- gulp-webpackでは、webpackを内部で呼び出している。
- その際、copyせずにentryやoutputにデータを入れてstream対応している。
- 公式ドキュメントのように
webpack(require("webpack.config"))
するとrequireのキャッシュにより、同じオブジェクトが参照される。 - 結果ファイル名が同一になり、保存のタイミング次第でA用の結果がBに出力されることがある。
対策
webpack.configのオブジェクトを毎回違うものにする。
var config = module.exports = function() {
// 毎回別のもにして、生成する
return {
externals: {
"jquery": "jQuery"
},
resolve: {
root: "./js"
},
extensions: ['', '.js']
};
};
そして、都度関数を呼び出して別のオブジェクトにする。
return gulp.src(ROOT_DIR + src)
.pipe(webpack(require('./webpack.config.js')()))
.pipe(rename(dst))
.pipe(gulp.dest(DST_DIR));
一応このように対策したけど、なにかが間違っている気もするけどメモとして。