gulp - 更新文件时重新加载浏览器同步 RewriteRules

标签 gulp browser-sync

我正在尝试重写通过 BrowserSync 代理加载的站点的 HTML。

我有一个:

  • ./src/search.txt -- 包含正则表达式匹配
  • ./build/replace.txt -- 包含网页的替换 HTML

我希望每次更改这些文件中的任何一个时重新加载 browserSync。

我的gulp文件:

gulp.task('readRegEx', function() {
    search_text = fs.readFileSync("./src/search.txt", "utf-8").toString();
    replace_text = fs.readFileSync("./build/replace.txt");
});

gulp.task('browser-sync', ['readRegEx'], function() {
    browserSync({
        files: ['./src/search.txt','./build/replace.txt'],
        proxy: {
            target: "http://www.example.com"
        },
        rewriteRules: [
            {
                match: new RegExp(search_text,"g"),
                once: true,
                fn: function (match) {
                    return replace_text;
                }
            }
        ]
    });
});

这几乎行得通。

它读取/src/search.txt 并加载(正则表达式),然后用/build/replace.txt 的内容替换它。

但它只能工作一次。因此,如果我更新 search.txtreplace.txt,则 browserSync 会重新加载,但 rewriteRules 位不会再次运行。

有没有办法告诉 browserSync 中的 rewriteRules 在文件更新时再次运行?

最佳答案

我认为你应该每次都阅读这些文件。

    gulp.task('readRegEx', function() {
        search_text = fs.readFileSync("./src/search.txt", "utf-8").toString();
        replace_text = fs.readFileSync("./build/replace.txt");
    });

    gulp.task('browser-sync', ['readRegEx'], function() {
        browserSync({
            files: ['./src/search.txt','./build/replace.txt'],
            proxy: {
                target: "http://www.example.com"
            },
            rewriteRules: [
                {
                    match: new RegExp(fs.readFileSync("./src/search.txt", "utf-8").toString(), "g"),
                    once: true,
                    fn: function (match) {
                        return fs.readFileSync("./build/replace.txt");
                    }
                }
            ]
        });
    });

关于gulp - 更新文件时重新加载浏览器同步 RewriteRules,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32079880/

相关文章:

javascript - package.json 使用 npm 调用 Harp 和浏览器同步

npm - 如何在浏览器同步中使用 gulp-load-plugins?

javascript - 2017 年 HTML/CSS 的实时重新加载/刷新解决方案

javascript - 所有外部 js 和 css 文件上的 Gulp 和浏览器同步 404

google-chrome - 是否有浏览器同步选项可以在隐身模式下打开 Google Chrome?

Angular2 延迟加载模块 : how to create a build package with SystemJS Builder?

javascript - gulp-concat 和 lazypipe 的这种组合在使用 gulp 4 时会导致错误吗?

javascript - 延迟 gulp-watch 执行

javascript - Uncaught Error : Cannot find module './charset.js'

javascript - 使 Gulp 任务同步,而无需创建一堆其他任务