gulp 像这样的批量替换任务如何实现
发布于 4 年前 作者 zhaoxixiong 4737 次浏览 来自 问答

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

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

7 回复

试试这个

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

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

replace函数长什么样,看不到

@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

@zhaoxixiong 换正则

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

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

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

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

回到顶部