我需要帮助。 我有这个代码。我有很多来源,我不使用n *源表。 我认为一个for可以是一个解决方案,但手表是实例化的,它不会读我的源[i]。
你可以说一些解决方案。
Thnks!
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]
对不起我的英文^^“
答案 0 :(得分:0)
很难解释为什么您的代码无法正常工作。正如你只能看到最后一个索引&#34; i&#34;绑定到所有监视功能。这被称为&#34;参考问题&#34;。您的所有监视功能都通过引用使用相同的索引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);
}