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, обрабатываются всегда все файлы. Как можно это исправить?
  • Вопрос задан
  • 175 просмотров
Решения вопроса 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
Front-end developer
Плагин gulp-newer создан для того, чтобы отслеживать удаление/добавление файлов, за обработку файлов он не отвечает. Для вашей задачи (компиляция файлов по отдельности) подходит плагин emitty.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы