在运行时动态配置Vue-cli中的publicPath是否可行?

3
在vue.config中动态更改publicPath是否可能?这意味着我想根据实际的url(某个域名)动态设置公共路径,例如,我想进行一次构建,但在staging和prod环境中使用它(并且在不同国家的不同cdn中使用不同的资产等)。
我发现webpack_public_path旨在在运行时设置公共路径。但是如何在vueJS(vue-cli)中使用webpack_public_path?
webpack_public_path对我没有用。也许有人可以在存储库中提供一个真实的示例?
期望结果:如果我在“生产”模式下构建一次应用程序,并在几个环境中部署(artifact),每个环境都在运行时设置自己的publicPath(cdn)。例如,在欧洲的test.com域中使用test-cdn-europe.com,对于test.ua则使用另一个-test-cdn.ua等。但我想在vue.config中在运行时更改此publicPath(可能基于当前域或类似的内容)。因此,我可以只做一次构建(因为多次构建可能需要太长时间)。
您能提供解决此问题的任何想法吗?谢谢!
1个回答

3
你可以给__webpack_public_path__分配一个新的值,但必须在应用程序本身启动之前这样做。
最好将其放入自己的文件中,并在Vue本身之前导入:
import './publicpath'
import Vue from 'vue'

那么在 publicpath.js 中,你需要这样做:
__webpack_public_path__ = window.your_public_path

您当然也可以使用window.location来获取域名或其他信息。


这在客户端上可以工作,但我无法弄清楚如何让服务器端工作,有什么想法吗? - Damian
1
我不确定您所指的“服务器端”是什么,尤其是您不是OP并且我对您的情况一无所知。 - Linus Borg
1
我也遇到了同样的问题,无法解决。你的解决方案只在我使用vue-cli的'dev'环境下运行时有效。但是当我构建我的vue项目并使用spring boot服务器提供index.html文件时,动态公共路径根本不起作用。例如,我需要从/instance1/assets访问资产文件,并从同一编译的vue项目中访问/instance2/assets。但是在从spring boot服务器提供index.html时它不起作用。 - Omri Shayo
在运行时更改__webpack_public_path__可能不足够。如果您感兴趣,可以在此处阅读我对此问题的看法:https://dev59.com/Xr_qa4cB1Zd3GeqPCzjk#65924415 - Michal Levý

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接