我想通过gulp(-watch)运行文件流,并使用'map-stream'更改每个文件的内容。如果我自己运行任务gulp js
,代码工作正常。如果我gulp watch
文件,它总是保存一些与我试图写入file.contents
的缓冲区无关的文件的旧版本。为什么呢?
我的设置如下:
const gulp = require('gulp'),
map = require('map-stream');
gulp.task('js-change-files', (done) => {
componentConfig = [];
gulp.src('src/**/*.js')
.pipe(map(function (file, done) {
file.contents = new Buffer.from(''+Math.random());
done(null, file);
}))
.pipe(gulp.dest('dist/'))
.on('end', done);
});
我有另一项任务等待第一项任务,以防万一:
gulp.task('js', ['js-change-files'], () => {
gulp.src('src/app.js')
// Do something with app.js
.pipe(gulp.dest('dist/'))
});
观看任务:
gulp.task('watch', () => {
gulp.watch('src/**/*.js', ['js']);
});
我已将问题缩小到将缓冲区保存到file.contents
,因为缓冲区会按预期产生新的随机数。但我无法弄清楚这里有什么干扰或者文件的旧版本来自哪里。