いくつかの JS ファイルを連結するための Gulp concat ウォッチ タスクのセットアップがあります。
var sources = [
'public/js/scriptA.js',
'public/js/scriptB.js',
'public/js/scriptC.js',
'public/js/scriptD.js',
'public/js/scriptE.js'
];
gulp.task('main.js', function(){
return gulp.src(sources)
.pipe(concat('main.js'))
.pipe(gulp.dest('./public/js'));
});
gulp.task('watch', function() {
gulp.watch(sources, ['main.js']);
});
ごく普通の設定だと思います。いずれかのスクリプトが変更されるたびにmain.js
、スクリプトをその順序で連結することによって が作成されます。99% の確率で正常に動作します。
しかし、場合によっては、おそらくランダムに、連結によって 1 つ以上のファイルが除外されることがあります。scriptB.js
たとえば、編集して保存してから、 、およびmain.js
のみを連結して確認します。C と D を完全に除外しました。C だけの場合もあれば、D の場合もあれば、A の場合もあります。ランダムです。除外されたファイルには何もしませんでした。エディターで開いていますが、変更されておらず、ただそこに座っています。Gulp は、ランダムな理由でそれを除外することがあります。scriptA
scriptB
scriptE
私がそれを修正する方法は、省略されたスクリプトを開き、ランダムな行または何かの最後にスペースを追加して保存することです。その後、main.js
期待どおりに連結されます。ファイルに問題はありませんでした。保存し直すしかありませんでした。
これは誰の知る限りでも未解決のバグですか? このバグに関する情報はどこにも見つかりませんでした。この問題をデバッグまたはログに記録して、再現方法を見つけるためにできることはありますか?
私が気づいたことの 1 つは、編集scriptC
して保存したとしましょう。その後、通知scriptD
がありませんでした。に戻っscriptC
て再度保存すると、scriptD
まだ連結されていません。scriptD
強制的にmain.js
. したがって、問題のポップアップが表示されたら、通常はこの方法で再現できます。
通常、これは 20 回の保存で約 1 回しか発生しません。