[英]Gulp Watching Creates Infinite Loop Without Changing Files
類似的其他問題,在這個非常淡化片斷,運行默認一飲而盡任務(通過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
這種情況仍然會發生。
我預計會感到尷尬,但我完全感到困惑。
我掌握的一些信息可能會導致一些錯誤。
編輯-試試看插件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,所以請記住您的分號,等等。
我不能保證這里的分辨率,但是解決此問題時有兩個變量發生了變化:
我的代碼,Node版本,devDependencies和版本是相同的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.