gulp 像这样的批量替换任务如何实现
 发布于 9 年前  作者 zhaoxixiong  7718 次预览  最后一次回复是 9 年前  来自 问答 

例如我有一批 .html 文件存放在目录demo下,现在我想实现的效果是先获取所有文件的文件名,然后再把每个文件名对应的文件里的某些内容进行替换,比如有一个名为index.html的文件,获取文件名index,然后再用这个文件名对这个文件里的内容进行替换。 我的思路是: 123.png

这样是可以获取到了所有的文件名,但replace方法不起作用 1234.png

7 回复
canhongpoxiao

试试这个

var newContent = content.replace('xxx', filename)
callback(null, newContent)

别忘了用 gulp.dest()输出一下

DevinXian

replace函数长什么样,看不到

zhaoxixiong

@canhongpoxiao

gulp.task(‘ifilenames’, function () { gulp.src(‘assets/html/*.html’) .pipe(each(function(content, file ,callback){ var newContent = content.replace(‘朝夕熊’, path.basename(file.path,’.html’)); callback(null, newContent) })) .pipe(gulp.dest(‘dist/html’)) .pipe(notify({ message: ‘fileNameReplace task complete’ })); });

这样写的话,是可以实现这个需求了,但还差一点点,就是只会替换文件中第一个匹配的字符串

111111.jpg

canhongpoxiao

@zhaoxixiong 换正则

var newContent = content.replace(/朝夕熊/g, path.basename(file.path,’.html’));
ginosin

指定的文件替换文字? 只用过gulp-replace,支持正则,挺方便的

zhaoxixiong

@canhongpoxiao 按你说的改成正则就可以了。谢谢!

zhaoxixiong

在研究这个功能的时候,在这个行不通的时候,我就换成foreach插件,结果也可以实现这个功能。传送门:《 前端自动化工具gulp 初识