2014-12-18 2 views
4

У меня есть задача-часы, которая проходит через массив. Строки внутри массива используются для получения разных путей к файлам для просмотра. Это линия с функцией часов. Функция on-function ищет изменения внутри этих файлов. Если есть изменение, вызывается новая функция, которая начинает скомпилировать sass-файлы.Gulp - параметр Pass для внутренней функции

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

Моя проблема заключается в параметре «groupName» внутри. Задача watch реагирует на изменения, но console.log не определен. Мне нужно получить вывод строк из массива, но я не знаю, как передать переменную в эту позицию (это необходимо для получения правильного исходного файла, который должен быть написан).

Привет, Lars

ответ

0

Попробуйте использовать function(e) вместо function(e, groupName). это может быть установка переменной groupName с undefined для вашего закрытия. ответ change возвращает только один аргумент, который я думаю.

+0

Awww maaan. Я пытался написать там только «groupName», но никогда не «e». Вот и все. Спасибо чувак! :) – Lars

+0

Удивительный чувак :) Рад помочь. –

Смежные вопросы