gulp: пропустить только файлы, измененные в трубе

Я пытаюсь перебирать файлы, подставлять текст в некоторые и сохранять только измененные. В моем текущем коде gulp-changed ничего не делает.

const gulp = require('gulp');
const changed = require('gulp-changed');
const replace = require('gulp-replace');

gulp.task('text-replace', function(){

    var before = 'xxx';
    var after = 'yyy';

gulp.src('src/**/*')
    .pipe(replace(before, after))
    .pipe(changed('src'))
    .pipe(gulp.dest('dest'));
});

ОБНОВЛЕНИЕ: я почти решил это сам, но есть небольшая проблема, связанная с gulp-cached в моем ответе ниже.

1 ответ

Согласно gulp-newer против gulp- change gulp- change и gulp-newer не сравнивают потоковые файлы с файлами в каталогах, они сравнивают файлы каталога 'src' с файлами каталога 'dest' и в соответствии с этим решают, что делать с потоковые файлы. Есть еще одно решение:

const cache = require('gulp-cached');

gulp.src('src/**/*')
    .pipe(cache('just_cache_name'))
    .pipe(replace(before, after))
    .pipe(cache('just_cache_name'))
    .pipe(gulp.dest('dest'));
});

Тем не менее, есть проблема - у меня есть src структура каталогов полностью воссоздана в dest, независимо от того, с файлами или пустыми.

Другие вопросы по тегам