Gulp:根据文件名替换HTML文件中的变量

时间:2016-02-04 08:18:33

标签: gulp gulp-tap

我们的项目正在使用Gulp。现在我有一个要求:我们有多个页面级HTML文件,比如UIViewlogin.html。在这些原始HTML文件中,有一个名为my.html的变量,应该分别替换({{PAGE_TITLE}})为Gulp"Login to System"。这是我目前的剧本:

"My Account"

事实证明变量gulp.task('pages', ['clean:tmp'], function () { var pageTitle = ''; return gulp.src('/my/source/html/**/*.html') .pipe(tap(function (file, t) { pageTitle = /index.html$/.test(file.path) ? 'Login to System' : 'My Account'; })) .pipe(replace(/{{PAGE_TITLE}}/g, pageTitle)) .pipe(gulp.dest('/my/dest/')); }); 永远不会在pageTitle之前设置。我已经搜索过很多次replace的文档,但我仍然不知道如何使其工作。请帮助,谢谢。

这篇文章:Modify file in place (same dest) using Gulp.js and a globbing pattern试图达到同样的效果,但他得到了一些其他解决方案。

1 个答案:

答案 0 :(得分:2)

我想出了解决方案如下:

gulp.task('pages', ['clean:tmp'], function () {

    function replaceDynamicVariables(file) {
        var pageTitle = /login.html$/.test(file.path) ? 'Login to System' : 'My Account';
        file.contents = new Buffer(String(file.contents)
            .replace(/{{PAGE_TITLE}}/, pageTitle)
        );
    }

    return gulp.src('/my/source/html/**/*.html')
        .pipe(tap(replaceDynamicVariables))
        .pipe(gulp.dest('/my/dest/'));
});