gulp手表立即终止

时间:2014-03-17 11:41:47

标签: gulp

我有一个非常小的gulp文件如下,注册了一个监视任务:

var gulp = require("gulp");
var jshint = require("gulp-jshint");

gulp.task("lint", function() {
  gulp.src("app/assets/**/*.js")
    .pipe(jshint())
    .pipe(jshint.reporter("default"));
});

gulp.task('watch', function() {
  gulp.watch("app/assets/**/*.js", ["lint"]);
});

我无法让手表任务连续运行。一旦我跑了gulp watch,它立即终止。

我已经清除了我的npm缓存,重新安装了依赖项等,但没有骰子。

$ gulp watch
[gulp] Using gulpfile gulpfile.js
[gulp] Starting 'watch'...
[gulp] Finished 'watch' after 23 ms

2 个答案:

答案 0 :(得分:7)

它本身并没有退出running the task synchronously

您需要从lint任务返回流,否则gulp不知道该任务何时完成。

gulp.task("lint", function() {
  return gulp.src("./src/*.js")
  ^^^^^^
    .pipe(jshint())
    .pipe(jshint.reporter("default"));
});

此外,您可能不想使用gulp.watch和此类手表的任务。使用the gulp-watch plugin可能更有意义,因此您只能处理更改的文件,如下所示:

var watch = require('gulp-watch');

gulp.task('watch', function() {
  watch({glob: "app/assets/**/*.js"})
    .pipe(jshint())
    .pipe(jshint.reporter("default"));
});

此任务不仅会在文件发生变化时进行lint,而且还会添加任何添加的新文件。

答案 1 :(得分:2)

添加OverZealous'答案是正确的。

gulp.watch现在允许您传递字符串数组作为回调,因此您可以拥有两个单独的任务。例如,hint:watch和'提示'。 然后,您可以执行以下操作。

gulp.task('hint', function(event){
    return gulp.src(sources.hint)
        .pipe(plumber())
        .pipe(hint())
        .pipe(jshint.reporter("default"));
})
gulp.task('hint:watch', function(event) {
   gulp.watch(sources.hint, ['hint']);
})

这只是一个例子,理想情况下,您可以将其定义为运行在一个连续的dist文件上。