例如我有一批 .html 文件存放在目录demo下,现在我想实现的效果是先获取所有文件的文件名,然后再把每个文件名对应的文件里的某些内容进行替换,比如有一个名为index.html的文件,获取文件名index,然后再用这个文件名对这个文件里的内容进行替换。 我的思路是:
这样是可以获取到了所有的文件名,但replace方法不起作用
试试这个
var newContent = content.replace('xxx', filename)
callback(null, newContent)
别忘了用 gulp.dest()输出一下
replace
函数长什么样,看不到
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’ })); });
这样写的话,是可以实现这个需求了,但还差一点点,就是只会替换文件中第一个匹配的字符串
@zhaoxixiong 换正则
var newContent = content.replace(/朝夕熊/g, path.basename(file.path,’.html’));
指定的文件替换文字? 只用过gulp-replace,支持正则,挺方便的
@canhongpoxiao 按你说的改成正则就可以了。谢谢!
在研究这个功能的时候,在这个行不通的时候,我就换成foreach插件,结果也可以实现这个功能。传送门:《 前端自动化工具gulp 初识》