簡體   English   中英

Gulp監視創建無限循環而無需更改文件

[英]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,所以請記住您的分號,等等。

我不能保證這里的分辨率,但是解決此問題時有兩個變量發生了變化:

  • 我已從版本10-> 11升級了Parallels VM應用程序(在Apple PowerBook上)。
  • 我使用當前版本的另一個許可證重新安裝了Windows 10(以前的版本是許可的開發版本或早期版本)。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM