vue-cli3.0 环境变量与模式配置方法


Posted in Javascript onNovember 08, 2018

vue-cli3.0移除了配置文件目录: config和build文件夹。可以说是非常的精简了,那移除了配置文件目录后如何自定义配置环境变量和模式呢?

为什么需要配置环境变量和模式呢?

所有方法肯定是来源于现实的需求。在一个产品的前端开发过程中,一般来说会经历本地开发、测试脚本、开发自测、测试环境、预上线环境,然后才能正式的发布。对应每一个环境可能都会有所差异,比如说服务器地址、接口地址、websorket地址…… 等等。在各个环境切换的时候,就需要不同的配置参数,所以就可以用环境变量和模式,来方便我们管理。

环境变量

cli-3.0总共提供了四种方式来制定环境变量:

1.在根目录添加.env文件,配置所有情况下都会用到的配置(不知道这个存在的意义,所有的都需要的也就不需要配置了吧)。

2.在根目录添加.env.local 文件,配置所有情况下都会用到的配置,与.env的区别是只会在本地,该文件不会被git跟踪。

3.在根目录添加.env.[mode] 文件,配置对应某个模式下的配置,比如:.env.development来配置开发环境的配置。

4.在根目录添加.env.[mode].local文件,配置对应某个模式下的配置,与.env.[mode]的区别也只是会在本地生效,该文件不会被git跟踪。

在文件中,我们只需要以key=value的方式就可以设置变量了。

例如:

FOO=bar
VUE_APP_SECRET=secret

环境变量的使用

设置完环境变量之后就可以在我们的项目中使用这两个变量了。不过还需要注意的是在项目的不同地方使用,限制也不一样。

1.在项目中,也就是src中使用环境变量的话,必须以VUE_APP_开头。例如我们可以在main.js中直接输出:console.log(process.env.VUE_APP_SECRET)

2.在webpack配置中使用,没什么限制,可以直接通过process.env.XXX来使用

3.在public/index.html中使用的:分三类:(没怎么用过)

<%= VAR %> 用于非转换插值 例如:`<link rel="shortcut icon" href="<%= BASE_URL %>favicon.ico" rel="external nofollow" >`
 <%- VAR %> 用于HTML转义插值
 <% expression %> 用于JavaScript控制流

模式

模式是Vue CLI项目中的一个重要概念。默认情况下,Vue CLI项目中有三种模式:

1.development:在vue-cli-service serve下,即开发环境使用

2.production:在vue-cli-service build 和vue-cli-service test:e2e下,即正式环境使用

3.test: 在vue-cli-service test:unit下使用

另外,如果你想要修改模式下默认的环境变量的话可以通过--mode来实现,例如:

 "dev-build": "vue-cli-service build --mode development"

有环境变量就能完成我们的需求了,为什么需要有模式的存在,这里我没查到详细的文档,个人认为模式是为了提供给第三方的插件一个辨识。例如vuex可以根据模式的不同,在development自动注入devtoolPlugin插件,利于开发,而在production中检测到错误不会进行console。

举例

说完了概念,可能还是比较模糊,可以试着添加一个stage环境,用来模拟预上线。

首先在package.json添加一种类型,并修改默认环境变量为stage环境变量

vue-cli3.0 环境变量与模式配置方法

在根目录下创建.env.stage文件,来声明变量:

vue-cli3.0 环境变量与模式配置方法

vue-cli3.0 环境变量与模式配置方法

这里声明的NODE_ENV = ‘production'用来表示这是生产环境。VUE_APP_CURRENTMODE为项目变量,outputDir为除数打包后文件的地址。
在vue.config.js中使用环境变量,制定输出文件为环境变量配置的文件:

vue-cli3.0 环境变量与模式配置方法

最后执行命令yarn stage能看到根目录下生成了stage文件:

vue-cli3.0 环境变量与模式配置方法

这样我们就配置完了stage环境。详细的项目地址可以参考:以vue-cli3.0为基础,结合vue-router、vuex、axios、iview组件库搭建一个工程化前端demo

参考文档:Environment Variables and Modes

总结

以上所述是小编给大家介绍的vue-cli3.0 环境变量与模式配置方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
如何让DIV可编辑、可拖动示例代码
Sep 18 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
Jan 16 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
Jun 12 Javascript
Bootstrap源码解读模态弹出框(11)
Dec 28 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
Feb 19 Javascript
解决LayUI表单获取不到data的问题
Aug 20 Javascript
javascript中函数的写法实例代码详解
Oct 28 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
Jan 27 jQuery
vue+koa2实现session、token登陆状态验证的示例
Aug 30 Javascript
vue中进行微博分享的实例讲解
Oct 14 Javascript
JavaScript实现移动端带transition动画的轮播效果
Mar 24 Javascript
JavaScript实现多文件下载方法解析
Aug 07 Javascript
详解如何创建并发布一个 vue 组件
Nov 08 #Javascript
webpack开发环境和生产环境的深入理解
Nov 08 #Javascript
webpack 开发和生产并行设置的方法
Nov 08 #Javascript
JS动画实现回调地狱promise的实例代码详解
Nov 08 #Javascript
深入解析ES6中的promise
Nov 08 #Javascript
vue中promise的使用及异步请求数据的方法
Nov 08 #Javascript
node使用Mongoose类库实现简单的增删改查
Nov 08 #Javascript
You might like
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
基于PHP的微信公众号的开发流程详解
2020/08/07 PHP
使两个iframe的高度与内容自适应,且相等
2006/11/20 Javascript
基于jQuery实现左右div自适应高度完全相同的代码
2012/08/09 Javascript
使用jquery实现以post打开新窗口
2014/03/19 Javascript
JQuery设置获取下拉菜单某个选项的值(比较全)
2014/08/05 Javascript
Lua表达式和控制结构学习笔记
2014/12/15 Javascript
JavaScript函数详解
2015/02/27 Javascript
javascript中关于&amp;&amp; 和 || 表达式的小技巧分享
2015/04/10 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
JavaScript里 ==与===区别详解
2016/08/16 Javascript
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
localStorage实现便签小程序
2016/11/28 Javascript
Node.js中的child_process模块详解
2018/06/08 Javascript
Vue实现移动端左右滑动效果的方法
2018/11/27 Javascript
如何自定义微信小程序tabbar上边框的颜色
2019/07/09 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
2019/09/16 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
使用JavaScript实现贪吃蛇游戏
2020/09/29 Javascript
python转换字符串为摩尔斯电码的方法
2015/07/06 Python
python:pandas合并csv文件的方法(图书数据集成)
2018/04/12 Python
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
Python实用库 PrettyTable 学习笔记
2019/08/06 Python
Pytorch实现将模型的所有参数的梯度清0
2020/06/24 Python
美国折衷生活方式品牌:Robert Graham
2018/07/13 全球购物
法国二手MacBook销售网站:Okamac
2019/03/18 全球购物
自荐信怎么写呢?
2013/12/09 职场文书
怎么写自荐书范文
2014/02/12 职场文书
企业优秀员工事迹材料
2014/05/28 职场文书
安全生产年活动总结
2014/08/29 职场文书
新郎结婚保证书
2015/02/26 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
幼儿园教师教学反思
2016/03/02 职场文书
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis