我有一个项目,我将相同的webpack JS包部署到多个不同的环境。有些环境使用CDN来提供像JS文件这样的静态资产,而有些环境则只使用与项目其余部分相同的根提供静态资产。
这个项目还有多个异步webpack块,所以我定义了一个 publicPath
为他们正确加载。
部署到非cdn时,webpack可以正常配置 publicPath
在我的webpack配置中提供所有类似的东西 /static/
。
但是,在部署到使用CDN的环境时,这不再适用于异步块,因为webpack将尝试从 /static/
这意味着他们询问主应用服务器而不是CDN。
很明显,我可以用我的CDN重新构建项目 publicPath
解决这个问题。但是,我更愿意在这两种情况下只使用一个部署包。
我的服务器端应用程序提供了一个javascript全局详细说明了CDN根路径 window.staticCDNRoot
。而且这种全局性也出现在非cdn情况下,只是指向应用服务器 - 所以它总是解析到正确的位置来加载静态资产。
有没有什么办法可以让webpack在运行时使用它来这样做 publicPath
变 window.staticCDNRoot + publicPath
没有巨大的hackery?
或者这个问题有更好的解决方案吗?