我正在操作一组文件而我正在使用gulp-replacer-task用" strings"来替换已处理文件的内容。基于当前在管道中的文件的基本名称或路径。
如何获取当前在管道中的文件属性?
gulp.task('svgbuild', function() {
return gulp.src('./src/*.svg')
.pipe(replace({
patterns: [
{
match: /STRING_TO_MATCH/g,
replacement: function() {
// how to get the basename of the "file" in the stream;
var str = 'file.basename'
// manipulate to get replacement string based on basename
var repl = str.toUpperCase()+'-inc'
return repl;
}
}
]
}))
});
答案 0 :(得分:1)
比我希望的要晚一些,但似乎我找到了使用gulp-tap解决问题的方法。这就是我的gulpfile.js的样子:
var gulp = require('gulp'),
path = require('path'),
replace = require('gulp-replace-task'),
tap = require('gulp-tap');
gulp.task('svgbuild', function () {
return gulp.src('*.txt')
.pipe(tap(function (file) {
return gulp.src(file.path)
.pipe(replace({
patterns: [
{
match: /foo/g,
replacement: function () {
var ext = path.extname(file.path),
base = path.basename(file.path, ext);
return base.toUpperCase() + '-inc'
}
}
]
}))
.pipe(gulp.dest('build'));
}));
});
答案 1 :(得分:0)
我认为你必须在Node.js中寻找解决方案。也许这会有所帮助:https://nodejs.org/api/path.html?