【问题标题】:GULP: rename the affected file onlyGULP:仅重命名受影响的文件
【发布时间】:2020-08-18 07:44:43
【问题描述】:

我想仅在已更改文件的同一文件夹中创建具有新扩展名的副本。 srcdest应该如何指定?

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(???));
});

【问题讨论】:

    标签: gulp-watch gulp-rename


    【解决方案1】:

    试试这个:

    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 选项,但我无法让它正常工作——也许这个选项不能很好地与 gulp v4 配合使用?要解决这个问题,在设置 watch 之前调用一次 rename,请参阅

    gulp.task('default', gulp.series('rename', 'watch'));
    

    现在它只会更改更改文件的扩展名,并将更改后的文件添加回它开始时所在的同一目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-22
      • 1970-01-01
      • 2019-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多