网站首页 > 技术文章 正文
承接上文,设置环境变量:vue-cli3.x创建的项目设置环境变量与部署
配置了环境变量有什么意义呢?当然是方便部署了。配置了环境变量后,就可以在自定义配置文件中,使用,比如配置基础路径、端口号等。那,如何配置呢?我们通过上文创建的项目,news-list中没看到有可以自定义的地方,别着急。这需要我们添加一个新的文件:vue.config.js。
在项目根目录下,创建文件:vue.config.js
这个文件是做什么的呢?原来,vue.config.js 是一个可选的配置文件,如果项目的 (和 package.json 同级的) 根目录中存在这个文件,那么它会被 @vue/cli-service 自动加载。你也可以使用 package.json 中的 vue 字段,但是注意这种写法需要你严格遵照 JSON 的格式来写。
这个文件应该导出一个包含了选项的对象:
// vue.config.js module.exports = { // 选项... }
那么,基础路径该怎么写呢?我们在一般的文档中会发现,有的写法是这样的:
module.exports = { baseUrl: '/myapp' }
但是,baseUrl从 Vue CLI 3.3 起已弃用,我们应该用publicPath。这个属性表示的是项目之前的公共路径,项目默认假设你的应用将会部署在域名的根部,比如 https://www.my-app.com/。如果你的应用时部署在一个子路径下,那么你需要在这里指定子路径。比如,如果你的应用部署在:https://www.my-app.com/my-app/,那么将这个值改为 `/my-app/`。这个值也可以被设置为空字符串 ('') 或是相对路径 ('./'),这样所有的资源都会被链接为相对路径,这样打出来的包可以被部署在任意路径。
从官方文档中,我们可以发现,publicPath是字符串类型,默认值就是'/',也就是根目录。同时这个值在开发环境下,同样生效。那如何与上文的自定义配置关联呢?原来,环境变量中的以 VUE_APP_ 开头的变量会被 webpack.DefinePlugin 静态嵌入到客户端的包中(即在项目代码中使用)。你可以在应用的代码中这样访问它们:
console.log(process.env.VUE_APP_BASEURL)
因此,在.env.dev中,我们定义了一组数据:
NODE_ENV = 'development' VUE_APP_CURRENTMODE = 'dev' VUE_APP_BASEURL = '/dev' VUE_APP_PORT = '8001'
同时,在vue.config.js中,我们引用上面的基础路径:
module.exports = { publicPath: process.env.VUE_APP_BASEURL }
然后,启动项目:
npm run dev
我们会发现,启动日志显示:
访问一下,发现基础路径出现了一个dev,没错。这就是我们设定的基础路径了。
但是我们发现,端口号还是默认的8080,如果系统中,这个端口号被占用了,我们想自定义一个,该怎么办呢?同样的,在自定义配置文件中,我们这样写:
devServer: { port: process.env.VUE_APP_PORT }
process.env.VUE_APP_PORT依然是在自定义环境变量中的值。
这样在启动项目后:
我们发现,端口号变成了我们之前设定的8001了。
全部的配置文件如下:
// vue.config.js // 官方文档 // https://cli.vuejs.org/zh/config/#%E5%85%A8%E5%B1%80-cli-%E9%85%8D%E7%BD%AE module.exports = { // 项目部署的基础路径 // 我们默认假设你的应用将会部署在域名的根部, // 比如 https://www.my-app.com/ // 如果你的应用时部署在一个子路径下,那么你需要在这里 // 指定子路径。比如,如果你的应用部署在 // https://www.my-app.com/my-app/ // 那么将这个值改为 `/my-app/` // 这个值也可以被设置为空字符串 ('') 或是相对路径 ('./'), // 这样所有的资源都会被链接为相对路径,这样打出来的包可以被部署在任意路径 publicPath: process.env.VUE_APP_BASEURL, devServer: { port: process.env.VUE_APP_PORT } }
ok,到此本文就介绍到这了,除了这些我们还可以自定义其他的配置,具体可参考官方文档:
https://cli.vuejs.org/zh/config/。
原创不容易,鉴于本人水平有限,文中如有错误之处欢迎大家指正。以后我会持续发布vue实战系列的文档,喜欢的朋友欢迎关注。
猜你喜欢
- 2024-09-27 一文带你彻底搞懂 NPM 知识点「进阶篇」
- 2024-09-27 深入探索Vue3:将您的项目打包为生产版本
- 2024-09-27 「Vue3教程」创建你的第一个Vue 3项目
- 2024-09-27 Vue3亮点:打造和发布你自己的组件库,简单步骤助你成为前端大神
- 2024-09-27 mac电脑如何安装VUE环境及预览(mac怎么安装vue)
- 2024-09-27 为了实践微前端,重构了自己的导航网站
- 2024-09-27 重磅!Vue CLI 3.0正式发布,带来多项重大更新
- 2024-09-27 运行 npm run xxx 的时候发生了什么?
- 2024-09-27 Vue全家桶-使用总结(国家基本药物使用情况分析总结)
- 2024-09-27 vue package.json 配置解析(vue-json-pretty)
- 1515℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 577℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 514℃MySQL service启动脚本浅析(r12笔记第59天)
- 487℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 486℃启用MySQL查询缓存(mysql8.0查询缓存)
- 470℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 450℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 448℃MySQL server PID file could not be found!失败
- 最近发表
-
- 宝塔面板Nginx如何提高网站访问速度?
- 接口调试工具ApiPost中form-data/x-www-form-urlencoded/raw区别
- 高并发场景下,Nginx性能如何提升10倍?
- 高并发场景下,Nginx如何抗住千万级流量?
- 浏览器中在线预览pdf文件,pdf.mjs插件实现web预览pdf
- 为什么你的网站加载慢?90%的人忽略了这2个设置。
- 别再无脑复制Nginx配置了!掌握这10个"性能核弹"级参数
- 你的Nginx配置,可能就是你网站最慢的一环,注意这几个优化参数
- 深入浅出HTTP压缩技术(http2压缩)
- C程序设计之:1-1/2+1/3-... + 1/n 的和
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (83)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)