我只想在更改的文件的同一文件夹中创建一个具有新扩展名的副本。应如何指定src
和dest
?
var gulp = require('gulp'),
rename = require("gulp-rename"),
watch = require('gulp-watch');
var filePath = "./repo/**/*.xml"
gulp.task('watch', function () {
watch(filePath, gulp.series('rename'));
});
gulp.task('rename', function () {
return gulp.src(???).pipe(rename(function (path) {
path.extname = ".mei";
})).pipe(gulp.dest(???));
});
试试这个:
var gulp = require('gulp'),
rename = require("gulp-rename"),
watch = require('gulp-watch'),
changedInPlace = require('gulp-changed-in-place');
var filePath = "./repo/**/*.xml"
gulp.task('watch', function () {
watch(filePath, gulp.series('rename'));
});
gulp.task('rename', function () {
return gulp.src(filePath)
.pipe(changedInPlace())
.pipe(rename(function (path) {
console.log(path);
path.extname = ".mei";
}))
.pipe(gulp.dest('repo'));
});
gulp.task('default', gulp.series('rename', 'watch'));
这使用gulp-changed-in-place插件来只传递同一目录中已更改的文件(在您的案例中为filePath
(。
它确实有一个firstRun
选项,但我无法让它正常工作——也许这个选项在gullow v4中不太好用?要解决此问题,在设置watch
之前调用rename
一次,请参阅
gulp.task('default', gulp.series('rename', 'watch'));
现在,它只会更改更改文件的扩展名,并将更改后的文件添加回启动时所在的目录中