如何让gulp-replace-task替换html文件中的文本?

时间:2015-11-30 19:16:22

标签: gulp

我在index.html文件中有以下文本,我想用gulp-replace-task替换:

<img src="assets/images/logo

<img style="width:100px;height:100px;" src="assets/ima

我想让“资产”的所有实例都替换为“my / stuff”。

我尝试了以下操作,但它无效:

gulp.task('default', function() {
    gulp.src('./index.html')
        .pipe(replace({
            patterns: [
                {
                    match: '/assets/g',
                    replacement: 'my/stuff'
                }
            ]
        }))
        .pipe(gulp.dest('./'))

2 个答案:

答案 0 :(得分:4)

匹配可以是字符串,但是如果你想使用正则表达式,请删除正则表达式周围的引号'

gulp.task('default', function() {
    gulp.src('./index.html')
        .pipe(replace({
            patterns: [
                {
                    match: /assets/g,
                    replacement: 'my/stuff'
                }
            ]
        }))
        .pipe(gulp.dest('./'))

答案 1 :(得分:3)

您也可以使用模块gulp-string-replace,它支持使用正则表达式,字符串甚至函数进行管理。

示例:

正则表达式:

var replace = require('gulp-string-replace');

gulp.task('replace_1', function() {
  gulp.src(["./config.js"]) // Every file allown. 
    .pipe(replace(new RegExp('@env@', 'g'), 'production'))
    .pipe(gulp.dest('./build/config.js'))
});

字符串:

gulp.task('replace_1', function() {
  gulp.src(["./config.js"]) // Every file allown. 
    .pipe(replace('environment', 'production'))
    .pipe(gulp.dest('./build/config.js'))
});

功能:

gulp.task('replace_1', function() {
  gulp.src(["./config.js"]) // Every file allown. 
    .pipe(replace('environment', function () {
       return 'production';
    }))
    .pipe(gulp.dest('./build/config.js'))
});