CNode

gulp 像这样的批量替换任务如何实现

问答
Zzhaoxixiong发布于10 年前最后回复10 年前7 回复7982 浏览0 收藏

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

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

查看回复

回复 (7)

Z
zhaoxixiong#1·10 年前
引用 canhongpoxiao试试这个 别忘了用 gulp.dest()输出一下

@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

Z
zhaoxixiong#2·10 年前
引用 canhongpoxiao@zhaoxixiong 换正则

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

Z
zhaoxixiong#3·10 年前

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

C
canhongpoxiao#4·10 年前

试试这个

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

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

D
DevinXian#5·10 年前

replace函数长什么样,看不到

C
canhongpoxiao#6·10 年前
引用 zhaoxixiong@canhongpoxiao gulp.task('ifilenames', function () { gulp.src('assets/html/ .html') .pipe(each(f...

@zhaoxixiong 换正则

var newContent = content.replace(/朝夕熊/g, path.basename(file.path,’.html’));
G
ginosin#7·10 年前

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

参与回复
登录后即可参与回复。登录