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
, независимо от того, с файлами или пустыми.