我有一个循环通过数组的watch-task。数组中的字符串用于获取要监视的不同文件路径。这就是手表功能的界限。 on-function查找这些文件中的更改。如果有更改,将调用一个新函数,该函数开始编译sass文件。
function setWatchPipe(groupName) {
gulp
.watch(watchStyles[groupName])
.on('change', function(e, groupName) {
console.log(groupName);
return gulp.src(appFiles.styles.src + groupName)
.pipe($.plumber({ errorHandler: function (error) {}}))
.pipe($.rubySass({
style: sassStyle,
compass: true,
noCache: true
}))
.pipe(isProduction ? $.combineMediaQueries({ log: true }) : _.noop())
.pipe(isProduction ? $.minifyCss({ keepSpecialComments: 1 }) : _.noop())
.pipe($.plumber.stop())
.pipe(gulp.dest(paths.styles.dest))
.pipe($.size({
showFiles: true
}));
});
}
var watchArray = ['base', 'front'];
gulp.task('watch', ['build-styles'], function() {
for(var i = 0; i < watchArray.length; i++)
setWatchPipe(watchArray[i]);
});
我的问题是参数&#34; groupName&#34;内。 watch-task会对更改做出反应,但console.log未定义。我需要从数组中获取字符串的输出,但我不知道如何将变量传递到该位置(需要获取正确的源文件,必须写入)
问候, 拉斯
答案 0 :(得分:0)
尝试使用function(e)
代替function(e, groupName)
。它可能是为您的闭包设置变量groupName
和undefined
。 change
回调只返回我认为的一个参数。