Gulp часы немедленно прекращаются

У меня есть очень минимальный файл gulpfile, как указано ниже, с зарегистрированной задачей наблюдения:

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, он немедленно прекратится.

Я очистил свой кэш npm, переустановил зависимости и т.д., но не купил.

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

Ответ 1

Это не выход, как таковой, выполнение задачи синхронно.

Вам нужно вернуть поток из задачи lint, иначе gulp не знает, когда эта задача будет завершена.

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

Кроме того, вы можете не использовать gulp.watch и задачу для такого рода часов. Вероятно, имеет смысл использовать плагин gulp-watch, поэтому вы можете обрабатывать только измененные файлы, например:

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

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

Эта задача будет не только заливаться при изменении файла, но и добавляться новые добавленные файлы.

Ответ 2

Чтобы добавить к правильному ответу OverZealous.

gulp.watch теперь позволяет передавать строковый массив в качестве обратного вызова, поэтому у вас могут быть две отдельные задачи. Например, hint:watch и 'hint'. Затем вы можете сделать что-то вроде следующего.

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']);
})

Это всего лишь пример, но в идеале вы бы определили, что это нужно выполнить, например, в файле concatted dist.