Задать вопрос
UnluckySerivelha
@UnluckySerivelha

Почему не срабатывает gulp newer?

Есть такой галп таск:
gulp.task('scss-blocks', function () {
    var filename = '';
    return gulp.src(paths.src + 'scss/blocks/*.scss')
        .pipe(tap(file => {
            path = file.path;
            filename = path.replace(/^.*[\\\/]/, '').replace('.css', '').replace('.scss', '');
            console.log(filename);
        }))
        .pipe(newer('./blocks/' + filename + '/'))
        .pipe(sourcemaps.init())
        .pipe(sass())
        .on("error", sass.logError)
        .pipe(sourcemaps.write())
        .pipe(gulp.dest(function(vinyl) {
            console.log(filename);
            return './blocks/' + filename + '/';
        }))
        .pipe(browserSync.stream())
});


Т.е. для каждого .scss файла должна создаваться папка в папке blocks. Это работает. Но не обрабатывает gulp newer, обрабатываются всегда все файлы. Как можно это исправить?
  • Вопрос задан
  • 232 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
UnluckySerivelha
@UnluckySerivelha Автор вопроса
Используя gulp-dependents и gulp-cached это заработало как должно!

Итоговый код таска:

gulp.task('scss-blocks', function () {
    return gulp.src(paths.src + 'scss/blocks/*.scss')
        .pipe(cached('sass'))
        .pipe(dependents())
        .pipe(sourcemaps.init())
        .pipe(sass())
        .on("error", sass.logError)
        .pipe(sourcemaps.write())
        .pipe(gulp.dest(function(vinyl) {
            return 'blocks/' + filename;
        }))
        .pipe(browserSync.stream())
});


Источник решения - https://stackoverflow.com/a/45894977
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@joseffie
Плагин gulp-newer создан для того, чтобы отслеживать удаление/добавление файлов, за обработку файлов он не отвечает. Для вашей задачи (компиляция файлов по отдельности) подходит плагин emitty.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы