我们是 Vue 及其服务器端渲染模块 Vue SSR 的快乐用户。我的项目的需求之一是我们能够在运行时动态调整 Webpack 的 publicPath,这样我们就可以从我们不同的 CDN 中获取资产(我们有两个,一个用于测试,一个用于生产)。
__webpack_public_path__
我们可以使用自由变量在客户端轻松完成此操作,您还可以覆盖SSR 客户端清单中的 publicPath 以将资产 URL 注入<head>
.
然而,我们仍然存在直接位于我们的模板中并由 SSR 呈现的资产 URL 的问题。例如,假设我们的标签中有以下图像:
<img src="~@/test.png" />
我们的目标是,在服务器和客户端上,我们都可以通过 publicPath 调整该 URL 以添加我们喜欢的前缀。似乎没有一种方法可以vue-ssr-server-manifest.json
在生成 publicPath 后动态更新它,最终的 URL 最终会是相对的,/static/test.png
或者我们最初在 Webpack 配置中引用的任何东西。
根据我们的项目限制,不可能重建我们的 SSR 包,因此我们需要在运行时执行此操作。我们尝试添加占位符值作为我们的 publicPath,例如__CUSTOM_WEBPACK_PUBLIC_PATH__
,并在运行时在服务器包中替换它们,但这最终无效,因为 publicPath 也嵌入在其他 Webpack 生成的文件中。
想知道是否有一种更简洁的方法可以直接通过 Vue SSR 实现我们所需要的,或者这是我们无法在运行时配置的东西。谢谢阅读!