簡體   English   中英

我有一個gulp.watch,但是它不能正常工作

[英]I have a for with a gulp.watch, but it doesnt work correctly

我需要幫助。 我有這個代碼。 我有很多資料來源,而且我不使用n * source手表。 我以為for可以解決,但手表已實例化,並且無法讀取我的原始資料[i]。

您可以說一些解決方案。

nk!

var base_source = '../';
var source = ['dir1', 'dir2'];
var allFiles = '/**/*';
var dest = '../dist';

gulp.task('default', function () {

      for(var i = 0; i < source.length ; i++) {
        var watchW = base_source + source[i] + allFiles;

        gulp.watch(watchW, function(obj){
          copyFiles(watchW, dest , obj);
        });

      }
    }

編輯:我需要copyFiles函數中的source [i]

對不起,我的英語^^“

很難解釋為什么您的代碼不起作用。 如您所見,只有最后一個索引“ i”綁定到所有監視功能。 這被稱為“參考問題”。 通過引用,您的所有手表功能都使用相同的索引i。 例如, 參見在loop中引用最后一個索引

使用@OverZealous的答案作為在循環創建 gulp 任務的指導,這是為您提供的解決方案:

var gulp = require('gulp');

// changed to up one directory
var base_source = './';

// changed variable name slightly for clarity
var sources = ['dir1', 'dir2'];
var allFiles = '/**/*';

// changed to up one directory
var dest = './dist';

var watchSources = Object.keys(sources);

gulp.task('default', function () {

  watchSources.forEach(function (index) {

    var watchW = base_source + sources[index] + allFiles;

    gulp.watch(watchW, function (obj) {
      copyFiles(watchW, dest, obj);
    });
  });
});

function copyFiles(watched, to, obj)  {
  console.log("watched = " + watched);
}

暫無
暫無

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

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