如何在gulp-search-replace上添加前缀

时间:2018-02-05 17:15:47

标签: node.js functional-programming stream gulp

我不知道怎么问这个,但这似乎是一件相当简单的事情。

在这个gulp任务中,每次出现" old"替换为" new"在一堆文件上。

gulp.task('prefix-replace', function () {
    return gulp.src('svg/*')
        .pipe(replace('old', 'new'))
        .pipe(gulp.dest('dist/'));
});

如何获取文件的名称(或索引或​​任何唯一ID),因此替换将为每个文件添加唯一的前缀?

我尝试了uuid

gulp.task('prefix-replace', function () {
    return gulp.src('svg/*')
        .pipe(replace('old', uuidv4() + 'new'))
        .pipe(gulp.dest('dist/'));
});

但是这会为所有文件中的每个替换生成相同的ID(我知道这不是for循环,但我现在正在努力使用流,你可以清楚地看到)。

这将为每次更换生成一个新ID,这也不是我想要的:

gulp.task('prefix-replace', function () {
    return gulp.src('svg/*')
       .pipe(replace('term', function() {
            return uuidv4() + 'term'
        }))
        .pipe(gulp.dest('dist/'));
});

如何获取每个文件的唯一ID?

2 个答案:

答案 0 :(得分:0)

gulp-rename包有一个前缀选项https://www.npmjs.com/package/gulp-rename

答案 1 :(得分:0)

gulp-replace with file object可以访问乙烯基文件引用,您可以使用它来获取当前文件名,如下所示:

gulp.task('prefix-replace', function () {
    return gulp.src('svg/*')
       .pipe(replace('term', function() {
            return this.file.relative + ': term'
        }))
        .pipe(gulp.dest('dist/'));
});

this.file.relative是一个字符串,因此如果需要,您可以对其使用字符串操作(例如剥离扩展名)。 this.file.path为您提供当前文件的完整路径。