Gulp Watching创build无限循环而不更改文件

类似于其他问题,在这个非常淡化的代码片断中,运行默认的 gulp任务(通过npm start运行gulp ); 这段代码创build了一个循环运行脚本任务的无限循环。 这里是gulpfile.js (字面上目前是整个事情):

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

更奇怪的是,不pipebuild文件夹是否重build ,脚本任务将在调用npm start后立即执行! 循环开始。

如果你好奇,这里是我的package.json中粘贴的(也是唯一的)脚本对象:

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

我的目录中唯一的其他东西是一个脚本文件夹,里面有一个app.js和一个home.js文件。 很明显,一旦这个任务运行, build文件夹被创build(如果它还没有在那里),并且上述两个文件被复制到它。

您可以看到我只在根目录的第一级文件夹(脚本)中查找脚本,所以我不应该通过引用对同一组脚本的更改来实现无限循环。 此外,即使我是明确的,并指向一个具有相对path,如./scripts/home.js只是一个特定的文件,这仍然发生。

我期待着尴尬,但我完全困惑。

       

网上收集的解决方案 "Gulp Watching创build无限循环而不更改文件"

我已经拿起了几件事情,可能会导致一些错误。

编辑 – 尝试手表插件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']); 

所以这很奇怪的行为,但这应该做的伎俩。 我唯一一次使用./在我的命运之中。

还要记住,gulpfile只是一个JS,所以记住你的分号等。

我不能保证这里的解决scheme,但是当解决这个问题时,我有两个variables:

  • 我从版本10 – > 11升级了我的Parallels VM应用程序(在Apple PowerBook上)。
  • 我使用当前版本的另一个许可证重新安装了Windows 10(前一个是许可开发或早期版本)。

我的代码,Node版本,devDependencies和版本是相同的。