【发布时间】:2015-10-26 03:00:30
【问题描述】:
我有一个项目,我将相同的 webpack JS 包部署到多个不同的环境。一些环境使用 CDN 来提供静态资产(如 JS 文件),而另一些环境则不使用,只是从与项目其余部分相同的根目录提供静态资产。
这个项目还有多个异步 webpack 块,所以我定义了一个 publicPath 以便正确加载它们。
当部署到非 CDN 时,webpack 可以在我的 webpack 配置中使用静态配置的 publicPath 很好地服务于 /static/ 之类的所有内容。
但是,当部署到使用 CDN 的环境时,这不再适用于异步块,因为 webpack 将尝试从 /static/ 访问这些块,这意味着它们会询问主应用服务器而不是 CDN。
很明显,我可以在publicPath 中使用我的 CDN 重新构建项目来解决这个问题。但是,我更愿意在这两种情况下都只使用一个部署包。
我的服务器端应用程序提供了一个 JavaScript 全局,详细说明了 CDN 根路径,类似于 window.staticCDNRoot。而且这个全局也存在于非 CDN 情况下,只是指向应用服务器 - 所以它总是解析到正确的位置来加载静态资产。
有什么方法可以让 webpack 在运行时利用它,以便 publicPath 变为 window.staticCDNRoot + publicPath 而无需大量黑客攻击?
或者有更好的解决方案吗?
【问题讨论】:
-
嗨@Mike_Driver 你能在块文件脚本源之前生成CDN服务器路径吗?我尝试了 webpack_public_path 但没有运气。在这里查看我的问题link
标签: javascript webpack