热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

vuecli3.0环境变量与模式设置和process.env的使用

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

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


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

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


process.env环境变量

cli-3.0总共提供了四种方式来制定环境变量:
    在根目录添加.env文件,配置所有情况下都会用到的配置(不知道这个存在的意义,所有的都需要的也就不需要配置了吧)。
    在根目录添加.env.local 文件,配置所有情况下都会用到的配置,与.env的区别是只会在本地,该文件不会被git跟踪。
    在根目录添加.env.[mode] 文件,配置对应某个模式下的配置,比如:.env.development来配置开发环境的配置。
    在根目录添加.env.[mode].local文件,配置对应某个模式下的配置,与.env.[mode]的区别也只是会在本地生效,该文件不会被git跟踪。
    在文件中,我们只需要以key=value的方式就可以设置变量了

例如

FOO=bar
VUE_APP_SECRET=secret

环境变量的使用

设置完环境变量之后就可以在我们的项目中使用这两个变量了。不过还需要注意的是在项目的不同地方使用,限制也不一样。
在项目中,也就是src中使用环境变量的话,必须以VUE_APP_开头。例如我们可以在main.js中直接输出:console.log(process.env.VUE_APP_SECRET)
在webpack配置中使用,没什么限制,可以直接通过process.env.XXX来使用
在public/index.html中使用的:分三类:(没怎么用过)

<%&#61; VAR %> 用于非转换插值 例如&#xff1a;&#96;favicon.ico">&#96;
<%- VAR %> 用于HTML转义插值
<% expression %> 用于Javascript控制流

模式

模式是Vue CLI项目中的一个重要概念。默认情况下&#xff0c;Vue CLI项目中有三种模式&#xff1a;
development&#xff1a;在vue-cli-service serve下&#xff0c;即开发环境使用
production&#xff1a;在vue-cli-service build 和vue-cli-service test:e2e下&#xff0c;即正式环境使用
test&#xff1a; 在vue-cli-service test:unit下使用

另外&#xff0c;如果你想要修改模式下默认的环境变量的话可以通过--mode来实现
"dev-build": "vue-cli-service build --mode development"

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




上手操作

package.json


.env.development 是开发环境下的配置文件
.env.production 是生产环境下的配置文件
如果这两个文件是空的&#xff0c;那么运行 npm run serve 时&#xff0c;process.env.NODE_ENV 的值默认就是 development&#xff1b;运行 npm run build 时&#xff0c;process.env.NODE_ENV 的值默认就是 production&#xff1b;

{"scripts": {"serve": "vue-cli-service serve",//默认就是 development开发环境"build": "vue-cli-service build",//默认就是 production生产环境"lint": "vue-cli-service lint","serve:dev": "vue-cli-service serve --mode dev","serve:prod": "vue-cli-service serve --mode prod","serve:beta": "vue-cli-service serve --mode beta","build:dev": "vue-cli-service build --mode devbuild","build:prod": "vue-cli-service build --mode prodbuild","build:beta": "vue-cli-service build --mode betabuild"},
}

添加文件

//.env.beta文件
NODE_ENV &#61; &#39;beta&#39;
VUE_APP_NODE_ENV &#61; &#39;beta&#39;//.env.betabuild文件
VUE_APP_NODE_ENV &#61; &#39;beta&#39;
NODE_ENV &#61; &#39;production&#39;
outputDir &#61; &#39;betabuild&#39; //输出文件名
&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;
//.env.dev文件
NODE_ENV &#61; &#39;dev&#39;
VUE_APP_NODE_ENV &#61; &#39;dev&#39;//.env.devbuild文件
VUE_APP_NODE_ENV &#61; &#39;dev&#39;
NODE_ENV &#61; &#39;production&#39;
outputDir &#61; &#39;devbuild&#39;
&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;
//.env.prod文件
NODE_ENV &#61; &#39;production&#39;
VUE_APP_NODE_ENV &#61; &#39;production&#39;//.env.prodbuild文件
VUE_APP_NODE_ENV &#61; &#39;prod&#39;
NODE_ENV &#61; &#39;production&#39;
outputDir &#61; &#39;prodbuild&#39;

这里声明的NODE_ENV &#61;&#39;production&#39;用来表示这是生产环境。VUE_APP_NODE_ENV为项目变量&#xff0c;outputDir为除数打包后文件的地址(默认打包输出地址dist)。

vue.config.js中使用环境变量&#xff0c;制定输出文件为环境变量配置的文件

module.exports &#61; {//根据环境build打包到对于路径outputDir : process.env.outputDir,
}

使用


 .gitignore

增加忽略文件

/prodbuild
/devbuild
/betabuild

.DS_Store
node_modules
/dist
/prodbuild
/devbuild
/betabuild# local env files
.env.local
.env.*.local# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

打包 


推荐阅读
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文详细介绍了解决全栈跨域问题的方法及步骤,包括添加权限、设置Access-Control-Allow-Origin、白名单等。通过这些操作,可以实现在不同服务器上的数据访问,并解决后台报错问题。同时,还提供了解决second页面访问数据的方法。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
author-avatar
幸福璞子难_197
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有