[英]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.