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.