Gulp 更新文件时重新加载浏览器同步重写规则

juud5qan  于 2022-12-08  发布在  Gulp
关注(0)|答案(1)|浏览(138)

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

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

我希望browserSync在每次更改这些文件时重新加载。
我咽了一口唾沫:

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并加载(regex),然后用/build/replace. txt的内容替换它。
但它只工作一次。所以如果我更新search.txtreplace.txt,browserSync会重新加载,但rewriteRules位不会再次运行。
有没有办法告诉browserSync中的rewriteRules在文件更新时再次运行?

7cjasjjr

7cjasjjr1#

我觉得你每次都应该看一下档案。

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");
                    }
                }
            ]
        });
    });

相关问题