Javascript gulp watch无休止地编译而不更改文件

Javascript gulp watch无休止地编译而不更改文件,javascript,node.js,gulp,gulp-watch,Javascript,Node.js,Gulp,Gulp Watch,出于某种原因,我的脚本gulp watch任务无休止地在循环中运行(如此之多以至于它激活了我MBP上的风扇!),尽管事实上我在其他各种项目中使用相同的gulp文件 它只是一次又一次地编译脚本。尝试删除所有节点模块,并再次使用npm安装。但同样的问题。我设置的sass编译任务没有相同的问题 我甚至尝试过排除编译像jquery/其他插件这样的供应商代码gulp.watch(['./js/*.js','!/js/vendor/**'],['scripts']) 但还是有同样的问题 还尝试注释一些脚本,

出于某种原因,我的脚本gulp watch任务无休止地在循环中运行(如此之多以至于它激活了我MBP上的风扇!),尽管事实上我在其他各种项目中使用相同的gulp文件

它只是一次又一次地编译脚本。尝试删除所有节点模块,并再次使用
npm安装
。但同样的问题。我设置的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();
终端输出(路径替换为“路径”):


您正在查看
js
文件夹中的
*.js
文件,然后运行
脚本
任务

gulp.watch('./js/*.js', ['scripts']);});
然后,您的
脚本
任务将在
js
文件夹中编写一个
.js
文件

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

。。。然后再次触发手表状态。。。。现在您有了一个循环。

啊,是的,这解决了它,谢谢!有道理。奇怪的是,我最初认为这很奇怪,但实际上没有尝试,因为我在多个项目中使用同一个文件,认为它必须自动忽略刚刚编译的文件。显然不是!这就成功了:
gulp.watch(['./js/*.js',!/js/vendor/**',!/js/script-dist.js',['scripts')
.pipe(gulp.dest('./js/'))