gulp-watch бесконечно компилируется без внесения изменений в файлы

По какой-то причине моя задача gulp-watch для скриптов бесконечно зацикливается (настолько, что активирует вентилятор на моем MBP!), несмотря на то, что я использую тот же файл gulp в различных других проектах.

Он просто продолжает компилировать сценарии снова и снова. Пробовал удалить все модули узла и снова использовать npm install. Но такая же проблема. У меня нет такой же проблемы с задачей компиляции sass, которую я настроил.

Я даже пытался исключить компиляцию кода поставщика, такого как jquery/другие плагины. gulp.watch(['./js/*.js', '!./js/vendor/**'], ['scripts']);

Но все еще с той же проблемой.

Также попытался закомментировать некоторые сценарии и повторно ввести их один за другим. Но, кажется, нет последовательного оскорбительного сценария.

// include gulp
var gulp = require('gulp'); 


// --------------------------------------------------------------
// Plugins
// ---------------------------------------------------------------

var concat = require('gulp-concat');
var stripDebug = require('gulp-strip-debug');
var uglify = require('gulp-uglify');
var include = require('gulp-include');
var sass = require('gulp-sass');
var minifycss = require('gulp-minify-css');
var watch = require('gulp-watch');
var livereload = require('gulp-livereload');
var changed = require('gulp-changed');


// --------------------------------------------------------------
// JS
// ---------------------------------------------------------------

gulp.task('scripts', function() {
gulp.src(['./js/script.js'])
    .pipe(include())
    .pipe(concat('script-dist.js'))
    .pipe(stripDebug())
    .pipe(uglify())
    .pipe(gulp.dest('./js/'))
    .pipe(livereload());
 });

// --------------------------------------------------------------
// Sass
// ---------------------------------------------------------------

gulp.task('styles', function() {
gulp.src('./ui/scss/styles.scss')
    .pipe(include())
    .pipe(sass({
        errLogToConsole: true
    }))
    .pipe(minifycss())
    .pipe(gulp.dest('./ui/css/'))
    .pipe(livereload());
});

gulp.task('watch', function() {

gulp.watch('./ui/scss/*.scss', ['styles']);
gulp.watch('./js/*.js', ['scripts']);});

gulp.task('default', ['styles', 'watch']);
gulp.task('default', ['scripts', 'watch']);

livereload.listen();

Вывод терминала (путь заменен на 'PATH'):

[15:49:17] Starting 'scripts'...
[15:49:17] Finished 'scripts' after 2.08 ms
[15:49:18] /_PATH_//js/script-dist.js reloaded.
[15:49:18] Starting 'scripts'...
[15:49:18] Finished 'scripts' after 2.58 ms
[15:49:19] /_PATH_//js/script-dist.js reloaded.
[15:49:19] Starting 'scripts'...
[15:49:19] Finished 'scripts' after 1.41 ms
[15:49:19] /_PATH_//js/script-dist.js reloaded.
[15:49:30] Starting 'scripts'...
[15:49:30] Finished 'scripts' after 1.42 ms
[15:49:31] /_PATH_//js/script-dist.js reloaded.
[15:49:31] Starting 'scripts'...
[15:49:31] Finished 'scripts' after 2.45 ms
[15:49:32] /_PATH_//js/script-dist.js reloaded.
[15:49:32] Starting 'scripts'...
[15:49:32] Finished 'scripts' after 1.17 ms
[15:49:33] /_PATH_//js/script-dist.js reloaded.
[15:49:33] Starting 'scripts'...
[15:49:33] Finished 'scripts' after 1.84 ms
[15:49:34] Starting 'scripts'...
[15:49:34] Finished 'scripts' after 1.1 ms
[15:49:35] /_PATH_//js/script-dist.js reloaded.
[15:49:35] Starting 'scripts'...
[15:49:35] Finished 'scripts' after 1.73 ms
[15:49:36] Starting 'scripts'...
[15:49:36] Finished 'scripts' after 1.12 ms
[15:49:36] /_PATH_//js/script-dist.js reloaded.
[15:49:36] /_PATH_//js/script-dist.js reloaded.
[15:49:36] Starting 'scripts'...
[15:49:36] Finished 'scripts' after 908 μs
[15:49:37] /_PATH_//js/script-dist.js reloaded.
[15:49:37] /_PATH_//js/script-dist.js reloaded.

person jx3    schedule 17.08.2015    source источник


Ответы (1)


Вы просматриваете *.js файлы в папке js, а затем запускаете задачу scripts.

gulp.watch('./js/*.js', ['scripts']);});

Затем ваша scripts задача состоит в записи файла .js в папку js.

.pipe(gulp.dest('./js/'))

... который затем снова запускает условие наблюдения.... и теперь у вас есть цикл.

person Dal Hundal    schedule 17.08.2015
comment
Ах да, это исправлено, спасибо! Имеет смысл. Странно, как я думал изначально, но на самом деле не пытался, потому что я использую один и тот же файл для нескольких проектов, думал, что он должен автоматически игнорировать только что скомпилированный файл. Явно нет! Это помогло: gulp.watch(['./js/*.js', '!./js/vendor/**', '!./js/script-dist.js'], ['scripts']); - person jx3; 17.08.2015