2017-10-17 148 views
1

我需要幫助。 我有這個代碼。我有很多來源,我不使用n *源手錶。 我認爲一個for可以是一個解決方案,但手錶被實例化,它不讀取我的源[i]。我有一個與gulp.watch,但它不能正常工作

你可以說一些解決方案。

Thiks!

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); 
     }); 

     } 
    } 

編輯:我需要源[i]於copyFiles功能

對不起,我的英文^^」

回答

0

這是很難解釋爲什麼你的代碼不能正常工作,你可以。只能看到最後一個索引「i」必然會被所有手錶功能所取代,這就是所謂的「參考問題」,所有的手錶功能都使用相同的索引i參考,例如referencing last index in loop

使用@ OverZealous的回答作爲creating gulp tasks in a loop的指導,這裏是您的解決方案:

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); 
} 
+0

Thnks !!你的回答和@ OverZealous的回答打開了我的想法。 –

+0

不客氣。如果您發現我的答案正確並有幫助,請接受正確的答案,以便其他人知道它的工作。謝謝。 – Mark

相關問題