vue打包后的静态文件上传到CDN,如何设置静态文件域名?

24 篇文章 0 订阅
8 篇文章 0 订阅

在搞资源文件全球加速时需要将 JS,CSS,IMG 等静态资源放到 CDN 服务器上,WEB 网站上引用CDN 上缓存的资源,因为网站用vue-cli 搭建的,所以需要对 vue-cli 配置文件 (vue-config-js) 进行修改,修改打包后的index.html中静态资源引用路径。

vue.config.js

module.exports = {
  publicPath: process.env.NODE_ENV === "production" ? "https://resource.xxx.com/" : "/",
}

publicPath

部署应用包时的基本 URL,默认值'/'。默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上。如 https://my-app.com/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://my-app.com/my-app/,则设置 publicPath 为 /my-app/

  • 用法和 webpack 本身的 output.publicPath 一致,但是 Vue CLI 在一些其他地方也需要用到这个值,所以请使用 publicPath 而不要直接修改 webpack 的 output.publicPath。
  • 这个值也可以被设置为空字符串 '' 或是相对路径 './',这样所有的资源都会被链接为相对路径。
  • 该值也是打包后生成的 index.html 静态资源文件引用的路径。通常打包后静态资源找不到时修改 publicPath 即可。
  • 如上代码打包后生成的 index.html 中 js 的 src 为:https://resource.xxx.com/app.js

这时静态资源 CDN 已经结束,但是使用vue-cli 3.x的用户打包完运行发现自己的路由炸了,所有的路由都变成http:domain.com/https://resource.xxx.com/#/xx,都多加了https://resource.xxx.com/,不要慌,既然是路由的问题,咱就看一下 路由配置文件

router.js

const router = new VueRouter({
  base: process.env.BASE_URL,
  routes
})

base

应用的基路径,默认值 '/'
例如,如果整个单页应用服务在 /app/ 下,base 就应该设为 "/app/"

  • vue-cli 3.x 默认配置base 为 process.env.BASE_URL,即为 baseUrl

  • baseUrl 从 Vue CLI 3.3 起已弃用,替换为 publicPath

  • BASE_URL 和 vue.config.js 中的 publicPath 选项相符,即你的应用会部署到的基础路径

因为我们刚刚在 vue.config.js 中设置了 publicPath 为 https://resource.xxx.com/,所以路由变成了这副鬼样子。

既然找到原因,那就根据自己想要的路径修改路由的 base 即可。

如果不需要特别处理路径,去掉 base 或将 base 改为'/' 就可以搞定了!!!

我的个人博客,有空来坐坐

https://www.wangyanan.online

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值