1
在Gulp中,如何重命名映像文件名稱以匹配文件夾名稱和數字?如何重命名圖像文件名稱以匹配文件夾名稱和數字?
例如,我有:
img/cats/spotty.svg
img/cats/edgar.svg
,我想:
images/cats/cat1.svg
images/cats/cat2.svg
我還有其他幾個子文件夾,除了貓也。
我試過使用重命名失敗,但數字的增加使它不能完全工作。
在Gulp中,如何重命名映像文件名稱以匹配文件夾名稱和數字?如何重命名圖像文件名稱以匹配文件夾名稱和數字?
例如,我有:
img/cats/spotty.svg
img/cats/edgar.svg
,我想:
images/cats/cat1.svg
images/cats/cat2.svg
我還有其他幾個子文件夾,除了貓也。
我試過使用重命名失敗,但數字的增加使它不能完全工作。
您可以使用gulp-rename
package併爲其提供一個自定義函數,用於在文件通過時對其進行重命名。使用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;
}