我正在尝试创建一个 Wordpress 主题开发环境(更准确地说是从带有浏览器同步的 gulp 迁移到 webpack)。因此,我设置了一个代理指向我的 wordpress 安装(也在本地)。当我在浏览器中访问 webpack 开发服务器时,代理似乎工作正常。例如localhost:8080/sample-page
显示 WordPress 页面localhost:8000/sample-page
。
问题是,该页面内的任何链接都将指向原始端口。当我使用页面上的导航时,我被重定向回localhost:8000/*
.
使用 gulp,我只需要创建浏览器同步任务,其中一个选项是目标 URL,它运行良好:
browserSync.init({
proxy: pjson.themeURL || "localhost:8000",
open: false
});
我尝试更改 HTTP-proxy-middleware 的不同选项,目前,我得到了以下配置(我还尝试了自动重写等选项):
devServer: {
publicPath: `${options.publicPath}/build/`,
proxy: {
"*": {
target: pjson.proxyURL || "http://localhost:8000",
logLevel: "debug",
secure: false,
changeOrigin: true
}
}
},
publicPath 将解析为/wp-content/themes/theme-name/build/
(我也尝试包括整个 url 而不仅仅是路径)
我希望我可以让它像浏览器同步代理一样运行。也许我需要设置一些标题?
我感谢所有的帮助!
编辑:
我从浏览器同步源中找到了以下代码,它似乎有一种方法负责替换页面内的所有链接: https ://github.com/BrowserSync/browser-sync/blob/master/packages/browser-同步/lib/server/proxy-utils.js
开发服务器似乎有可能使用onProxyRes
钩子修改请求,我可以在其中执行修改所有链接之类的操作,我只是没有时间尝试,所以我现在使用浏览器同步 atm。