0

Gulp を使用してソースの変更を監視し、アプリをコンパイル、lint、およびリロードしようとしています。

私の理解では、gulp.watch ではリソースのフィルタリングが許可されていないため、spec/test ファイルを更新するとすべてがリロードされます。例えば:

jsSrc = ['!./app/**/*spec.js', './app/**/*.js']    

gulp.task('watch', function() {
  gulp.watch(jsSrc, ['scripts', 'jsLint', 'reload']);
});

私の理解では、gulp-watch を使用するとリソースをフィルタリングできますが、別のタスクをトリガーするにはどうすればよいですか。

gulp.task('watch', function() {
  gulp.src(jsSrc)
    .pipe(require('gulp-watch')())
    // how do I call tasks?  ['scripts', 'jsLint', 'reload']
});
4

2 に答える 2

0

あなたはそうしない。gulp-watchすべてのファイルを発行し、決して終了しないストリームです。次に、変更されたファイルごとに、それを再度発行します。これを (直接) 使用してタスクをトリガーすることはできません。

決してエミットせずend、単一のファイルを「コンテキストから外して」取得するため、このプラグインは よりも操作が少し難しく、gulp.watchタスク全体が再びトリガーされます。

言われるよりも、私は通常、次のように設定します

gulp = require("gulp");

gulp.task('a', function() { console.log('a'); });
gulp.task('b', function() { console.log('b'); });

gulp.task('default', ['a','b'], function(){
    gulp.watch(['**/*.js','!**/foo.js'], ['a']);
    gulp.watch(['**/*.css','!**/foo.css'], ['b']);
});

この方法では、'foo.js' を無視しますが、他のすべての .js ファイルについては 'a' を実行し、b についても同様です。

glob 構文については、 https://github.com/isaacs/minimatchを参照してください

于 2014-06-18T09:45:00.263 に答える