2016-05-27 2 views
2

Подобно другие вопросы, в этом очень разбавленных сниппета, запустив по умолчанию задачи глотка (через который проходит npm startgulp); этот фрагмент создает бесконечный цикл, запускающий задачу сценариев снова и снова. Вот это gulpfile.js (буквально вся вещь в данный момент):Глоток Watching Создает бесконечный цикл без изменения файлов

'use strict'; 

const gulp = require('gulp'); 

// COPY SCRIPTS TO BUILD FOLDER 
gulp.task('scripts', function() { 
    return gulp.src('./scripts/**/*.js') 
    .pipe(gulp.dest('build/scripts')) 
}); 

// WATCH FILES 
gulp.task('watch', function() { 
    gulp.watch('./scripts/**/*.js', ['scripts']); 
}); 

// DEFAULT 
gulp.task('default', ['watch']); 

Лишний Странным является то, что ли построен заново сборки папку или нет, задача скрипты будут выполняться немедленно после звонка npm start! И цикл начинается.

В случае вам интересно, вот вставили (и только) объект скриптов в моем package.json:

"scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1", 
    "start": "gulp" 
    }, 

Единственная вещь в моем каталоге является скрипты папки с a app.js и home.js файл в нем. Очевидно, что после выполнения этой задачи создается папка build (если она еще не указана), и в нее копируются два вышеупомянутых файла.

Вы можете видеть, что я ищу скрипты в папке первого уровня корневого каталога, называемой скриптами, поэтому я не должен иметь бесконечный цикл, ссылаясь на изменения в одном и том же наборе сценариев. Кроме того, даже если я явный и указываю на один конкретный файл с относительным путем, например ./scripts/home.js, это все равно происходит.

Я ожидаю смущения, но я совершенно смущен.

ответ

0

Несколько вещей, которые я выбрал, которые могут вызвать некоторые ошибки.

EDIT - Попробуйте смотреть плагин npm install --save-dev gulp-watch

// Try and declare your plugins like this for now. 
var gulp = require('gulp'), 
    watch = require('gulp-watch'); 

// Provide a callback, cb 
gulp.task('scripts', function(cb) { 
    // Dont use ./ on your src as watch can have a problem with this 
    return gulp.src('scripts/**/*.js') 
    .pipe(gulp.dest('./build/scripts'), cb); // call cb and dont forget ; 
}); 

// remove ./ on watch 
gulp.task('watch', function() { 
    gulp.watch('scripts/**/*.js', ['scripts']); 
}); 

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

Так что это довольно странное поведение, но это должно сделать трюк. Единственный раз, когда я использую ./ в пределах gulp на моем dest.

Кроме того, только помните, что gulpfile это просто JS, так помните свою точку с запятой, и т.д.

+1

Плагин ['gulp-watch'] (https://www.npmjs.com/package/gulp-watch) и встроенный [' gulp.watch() '] (https: // github. com/gulpjs/gulp/blob/master/docs/API.md # gulpwatchglob - opts-tasks-or-gulpwatchglob - opts-cb) - это совершенно разные вещи.Поскольку он использует встроенный, 'require ('gulp-watch')' не нужно. –

+0

Я согласен с @SvenSchoenung и не нужно добавлять другую зависимость и перезванивать. Относительные пути всегда работали для меня в других стеках узлов. Похоже, что это были некоторые экологические проблемы. –

0

Я не могу гарантировать разрешение здесь, но у меня было две переменными, которые изменились, когда это было решено:

  • Я обновил приложение Parallels VM (на Apple PowerBook) от версии 10 -> 11.
  • Я переустановил Windows 10 с использованием другой лицензии для текущей версии (предыдущая версия была лицензированной версией разработчика или ранней версии).

Мой код, версия узла, devDependencies и версии были идентичны.

Смежные вопросы