vue-cli如何添加多种环境变量
vue-cli如何添加多种环境变量
目前webpack(vue-cli) 打包有两种变量,
development,productor, 如何添加一个test的测试环境呢
vue-cli 3.0
官方默认两种类型
develpomentproduction,而我们实际开发过程中,会有本地开发,测试环境,正式环境等等,因而这两种环境变量是不够的,因而需要第三种乃至多种变量环境
基于vue-cli3.0进行配置
You can specify env variables by placing the following files in your project root:
.env # loaded in all cases
.env.local # loaded in all cases, ignored by git
.env.[mode] # only loaded in specified mode
.env.[mode].local # only loaded in specified mode, ignored by git
An env file simply contains key=value pairs of environment variables:
FOO=bar
VUE_APP_SECRET=secre
上面所述,在根目录配置
.env,.env.[mode]...的文件,其次需要以VUE_APP开头进行变量申明
搭建项目进行测试
...
.env.development
.env.production
.env.test
package.json
...
每个文件的具体内容
.env.development
/* VUE_APP_CURRENTMODE 当前环境变量 */
VUE_APP_CURRENTMODE = 'development'
VUE_APP_ENV = 'development环境'
VUE_APP_LOGOUT_URL = 'http://l72.16.0.95/logout_development'
.env.production
VUE_APP_CURRENTMODE = 'production'
VUE_APP_ENV = 'production环境'
VUE_APP_LOGOUT_URL = 'http://l72.16.0.95/logout_production'
.env.test
/* NODE_ENV 目的用于指定是一开发还是生产形式进行操作 */
NODE_ENV = 'development'
VUE_APP_CURRENTMODE = 'test'
VUE_APP_ENV = 'test环境'
VUE_APP_LOGOUT_URL = 'http://baidu.cn/logout_test'
package.json
...
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
/* --mode test 用来传递参数 */
"test-serve": "vue-cli-service serve --mode test"
},
...
NODE_ENV,VUE_APP_*...需要多注意一下
通过上面配置,VUE_APP_LOGOUT_URL 在不同环境变量生成不同的对应退出链接,
一下便是具体展示效果
yarn serve// 开发环境
yarn test-serve// 测试环境
yarn build// 生产环境
通过这样配置,只用通过命令行便可以生成不同环境下的项目,如此便可以不用每次都要去改动具体的变量了
vue-cli2配置
现在vue-cli2的文档被vue-cli3替代了,只能用这种最low但却最简单的办法来解决问题
...
webpack.base.conf.js
webpack.dev.conf.js
webpack.dev.conf.test.js
webpack.prod.conf.js
...
build文件夹下 新增一个需要的环境webpack.dev.conf.test.js直接复制webpack.dev.conf.js即可,
config文件夹下,添加一个dev.env.test.js
webpack.dev.conf.test.js
...
plugins: [
new webpack.DefinePlugin({
// 环境变量 改为自己设定的变量即可
'process.env': require('../config/dev.env.test')
})
...
dev.env.test.js 依旧复制对应 dev.env.js
'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"testing"',
VUE_APP_CURRENTMODE: '"testing"',
VUE_APP_ENV: '"testing环境"',
VUE_APP_LOGOUT_URL: '"http://l72.16.0.95/logout_testing"'
})
此处注意申明的变量 都需要 '"var"'这样定义,不然拿不到值
最后在
package.json
中添加"test-dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.test.js",即可
最后各种效果图
npm run dev

npm run test-dev

npm run build

总结
- 开发环境依旧是两种
developmentproduction,只是在这两种基础上进行具体指定不同变量罢了,因而所谓的测试环境只是在生产环境中,另外列出一种变量,这样用于区分生产与测试的不同而已 - 目前vue-cli2和vue-cli3就都可以使用了,细节肯定都需要更多优化
- 对应的代码码云
2019-02-14 vuecli2 补充
package.json
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"test-dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.test.js",
"start": "npm run dev",
"lint": "eslint --ext .js,.vue src",
"build": "node build/build.js",
"test": "node build/build.js --test=123 --build=12346"
}
- 方式一
查了一些资料,对
package.json有了更多的一些了解,才发现其实通过环境变量会有更加简洁的方案。npm_lifecycle_event
修改之前的方案
prod.env.js
const env = process.env.npm_lifecycle_event === 'build' ? require('../config/prod.env') : require('../config/prod.env.test')
- 方式二
通过传参模式进行判断
process.argv--表示传参,我添加=是为了表示传参方便,便于识别
"test": "node build/build.js --test=123 --build=12346"
获取参数
const PARAMS = process.argv.splice(2)
function getKeyValue (params = []) {
if (!Array.isArray(params)) throw new Error('请传入数组格式参数')
const obj = {}
params.forEach(item => {
const o = item.slice(2).split('=')
obj[o[0]] = o[1]
})
return obj
}
const r = getKeyValue(PARAMS) // { test: '123', build: '12346' }
如此便可以在require时进行判断,具体选择哪一个即可
总结,这样就又多了几种方式,如此便更好使用
vue-cli如何添加多种环境变量的更多相关文章
- ***LINUX添加PHP环境变量:CentOS下将php和mysql命令加入到环境变量中
CentOS系统下如何将PHP和mysql命令加入到环境变量中,在Linux CentOS系统上 安装完php和MySQL后,为了使用方便,需要将php和mysql命令加到系统命令中,如果在没有添加到 ...
- linux下查看和添加PATH环境变量
linux下查看和添加PATH环境变量 $PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接. 编辑你的 PA ...
- Mac 可设置环境变量的位置、查看和添加PATH环境变量
Mac 启动加载文件位置(可设置环境变量) ------------------------------------------------------- (1)首先要知道你使用的Mac OS X是什 ...
- Mac可设置环境变量的位置、查看和添加PATH环境变量
Mac 启动加载文件位置(可设置环境变量) 首先要知道你使用的 Mac OS X 是什么样的 Shell,使用命令 echo $SHELL 如果输出的是:csh 或者是 tcsh,那么你用的就是 C ...
- linux下添加PATH环境变量
添加PATH环境变量,第1种方法:[root@lx_web_s1 ~]# export PATH=/usr/local/webserver/mysql/bin:$PATH 再次查看: [root@lx ...
- Mac下添加java环境变量
2015年4月22号更新: 发现一个坑:最近发现有同事按照本文方式配置jdk环境变量一直不成功,后来发现他是使用了“Oh-My-Zsh”,配置文件的路径不是/etc/profile或~/.bash_p ...
- Linux 添加到环境变量
在Linux下使用源码安装软件的时候,通常只能在软件安装目录下使用该软件命令,这样太麻烦,我们希望全局使用,可以将软件安装路径添加到系统环境变量里. 添加环境变量有2种方法: 1. 使用export命 ...
- mac 添加环境变量(jmeter添加至环境变量中)
Mac系统的环境变量,加载顺序为:a. /etc/profileb. /etc/pathsc. ~/.bash_profiled. ~/.bash_logine. ~/.profilef. ~/.ba ...
- ubuntu 应用添加进环境变量
BG:公司同事使用的电脑系统大多为windows ,有部分mac和Ubuntu(我就是那个部分Ubuntu),某些情况为了统一格式,便下载了一些解压即可使用的软件,但是每次点开文件夹然后点开程序很繁琐 ...
随机推荐
- 利用阿里云腾讯云正版KMS服务器端口转发
注意:以下内容仅供实验,请勿用于任何非法用途我们知道,阿里云和腾讯云在内网部署了KMS服务器,而且是正版的,那么,有没有办法使用公网的计算机直接或间接连接到这些KMS服务器呢,受代理服务器和跳板机配置 ...
- 如何在linux下安装jdk并运行java程序
一.进入root 大家可以看到我这里用的是CentOS 6.5 系统 二.测试网络与YUM是否可用 1.测试网络 ping www.baidu.com,如下图就是通了 参考: 一.JDK安装1.lin ...
- mysql 数据操作 单表查询 group by 聚合函数 没有group by情况下
聚合函数只能用在组里使用 #没有group by 则默认算作一组 取出所有员工的最高工资 mysql> select max(salary) from employee; +---------- ...
- python拼接字符串
python拼接字符串一般有以下几种方法: 1.直接通过(+)操作符拼接 s = 'Hello' + ' ' + 'World' + '!' print(s) 输出结果:Hello World! 使用 ...
- POJ1236:Network of Schools(tarjan+缩点)?
题目: http://poj.org/problem?id=1236 [题意] N(2<N<100)各学校之间有单向的网络,每个学校得到一套软件后,可以通过单向网络向周边的学校传输,问题1 ...
- Selenium IDE编辑区域修改操作学习
1.修改command.target.value,选择需要修改的步骤,然后点击下方,既可以直接进行修改. 2.添加新的操作步骤:直接在下方编辑区域的下方点击,然后输入或者选择操作类型,然后点击Targ ...
- <option> 标签的 value 属性
<html> <body> <form action="/example/html/form_action.asp" method="get ...
- C++ string 类
标准c++中string类函数介绍 注意不是CString之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而且作为 ...
- Linux系统——Ansible批量管理工具
批量管理工具: (1)ansible 操作简单(适用于500台以下服务器) (2)saltstack 比较复杂(一般适用于1000-4w台服务器) (3)puppet超级复杂 systemctl(统一 ...
- HDU1059 二进制拆分优化多重背包
/*问你能不能将给出的资源平分成两半,那么我们就以一半为背包,运行多重背包模版 但是注意了,由于个数过大,直接运行会超时,所以要用二进制拆分每种的个数*/ #include<stdio.h> ...


