1

我们的项目正在使用 Gulp。现在我有一个要求:我们有多个页面级 HTML 文件,比如login.htmlmy.html. 在这些原始 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. 我已经搜索了gulp-tap很多次的文档,但我仍然不知道如何使它工作。请帮忙,谢谢。

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

4

1 回答 1

5

我想出解决方案如下:

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/'));
});
于 2016-02-16T07:26:26.697 回答