与其他问题类似,在这个非常淡化的代码段中,运行默认 gulp任务(通过npm start
运行gulp
);此代码段创建了一个无限循环,一遍又一遍地运行脚本任务。这是 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']);
奇怪的是, build 文件夹是否重新构建,脚本任务将在调用npm start
后立即执行!循环开始了。
如果你有点好奇,这是我的 package.json 中粘贴的(也是唯一的)脚本对象:
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "gulp"
},
我目录中唯一的另一件事是脚本文件夹,其中包含 app.js 和 home.js 文件。显然,一旦运行了这个任务,就会创建 build 文件夹(如果它还没有),并将上述两个文件复制到其中。
您可以看到我只在根目录的第一级文件夹中查找脚本,因此我不应该通过引用同一组脚本上的更改来进行无限循环。此外,即使我是明确的,并指向一个具有相对路径的特定文件,例如./scripts/home.js
,这仍然会发生。
我预计会感到尴尬,但我完全糊涂了。
答案 0 :(得分:0)
我接受了一些可能导致错误的事情。
编辑 -
试试手表插件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中使用./
的唯一一次是我的目标。
另外请记住gulpfile只是一个JS,所以请记住你的分号等。
答案 1 :(得分:0)
我不能保证这里的解决方案,但是我解决了两个变量:
我的代码,节点版本,devDependencies和版本完全相同。