1

在 Gulp 中,如何重命名图像文件名以匹配文件夹名称加数字?

例如,我有:

img/cats/spotty.svg
img/cats/edgar.svg

我想:

images/cats/cat1.svg
images/cats/cat2.svg

除了猫之外,我还有其他几个子文件夹。

我尝试使用重命名但未成功,但添加数字使其无法完全工作。

4

1 回答 1

0

您可以使用该gulp-rename并为其提供自定义函数,以便在文件通过时重命名它们。使用path一些实用程序的包,创建一个构造函数来生成一个新的计数器哈希表,瞧:

'use strict';

var gulp = require('gulp'),
    rename = require('gulp-rename'),
    path = require('path');

gulp.task('default', [], function() {
    var renamer = new Renamer();

    gulp.src('img/**/*.*')
        .pipe(rename(renamer.folderToImgName))
        .pipe(gulp.dest('.build/images'));
});

function Renamer() {
    var countersHashTable = {};

    function folderToImgName(fileInfo) {
        var baseName = path.basename(fileInfo.dirname);

        countersHashTable[baseName] = countersHashTable[baseName] || 1;

        fileInfo.basename = baseName + countersHashTable[baseName].toLocaleString();

        // If you want a flat folder structure:
        //fileInfo.dirname = path.dirname(fileInfo.dirname);

        countersHashTable[baseName]++;
    }

    this.folderToImgName = folderToImgName;
}

@OverZaelous从这个答案部分重新混合。

于 2016-02-02T06:35:51.640 回答