vue-cli如何添加多种环境变量

目前webpack(vue-cli) 打包有两种变量,development, productor, 如何添加一个 test的测试环境呢

vue-cli 3.0

vue-cli3.0简化了业务需求,没有那么多额外的配置,目前想改变环境变量,官方默认如此, 网友1

官方默认两种类型 develpoment production,而我们实际开发过程中,会有本地开发,测试环境,正式环境等等,因而这两种环境变量是不够的,因而需要第三种乃至多种变量环境

基于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",即可

最后各种效果图

  1. npm run dev

  2. npm run test-dev

  3. npm run build

总结

  • 开发环境依旧是两种 development production,只是在这两种基础上进行具体指定不同变量罢了,因而所谓的测试环境只是在生产环境中,另外列出一种变量,这样用于区分生产与测试的不同而已
  • 目前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如何添加多种环境变量的更多相关文章

  1. ***LINUX添加PHP环境变量:CentOS下将php和mysql命令加入到环境变量中

    CentOS系统下如何将PHP和mysql命令加入到环境变量中,在Linux CentOS系统上 安装完php和MySQL后,为了使用方便,需要将php和mysql命令加到系统命令中,如果在没有添加到 ...

  2. linux下查看和添加PATH环境变量

    linux下查看和添加PATH环境变量 $PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接. 编辑你的 PA ...

  3. Mac 可设置环境变量的位置、查看和添加PATH环境变量

    Mac 启动加载文件位置(可设置环境变量) ------------------------------------------------------- (1)首先要知道你使用的Mac OS X是什 ...

  4. Mac可设置环境变量的位置、查看和添加PATH环境变量

    Mac 启动加载文件位置(可设置环境变量) 首先要知道你使用的 Mac OS X 是什么样的 Shell,使用命令 echo $SHELL 如果输出的是:csh 或者是 tcsh,那么你用的就是 C ...

  5. linux下添加PATH环境变量

    添加PATH环境变量,第1种方法:[root@lx_web_s1 ~]# export PATH=/usr/local/webserver/mysql/bin:$PATH 再次查看: [root@lx ...

  6. Mac下添加java环境变量

    2015年4月22号更新: 发现一个坑:最近发现有同事按照本文方式配置jdk环境变量一直不成功,后来发现他是使用了“Oh-My-Zsh”,配置文件的路径不是/etc/profile或~/.bash_p ...

  7. Linux 添加到环境变量

    在Linux下使用源码安装软件的时候,通常只能在软件安装目录下使用该软件命令,这样太麻烦,我们希望全局使用,可以将软件安装路径添加到系统环境变量里. 添加环境变量有2种方法: 1. 使用export命 ...

  8. mac 添加环境变量(jmeter添加至环境变量中)

    Mac系统的环境变量,加载顺序为:a. /etc/profileb. /etc/pathsc. ~/.bash_profiled. ~/.bash_logine. ~/.profilef. ~/.ba ...

  9. ubuntu 应用添加进环境变量

    BG:公司同事使用的电脑系统大多为windows ,有部分mac和Ubuntu(我就是那个部分Ubuntu),某些情况为了统一格式,便下载了一些解压即可使用的软件,但是每次点开文件夹然后点开程序很繁琐 ...

随机推荐

  1. 【elasticsearch 依赖 urllib3 请问 是否 urllib3和阿里es、oss的对接出现异常】

    During handling of the above exception, another exception occurred: Traceback (most recent call last ...

  2. Create an Index

    db.collection.createIndex( { name: -1 } ) Indexes — MongoDB Manual https://docs.mongodb.com/manual/i ...

  3. 转!idea 破解版 安装

    原博文地址:https://blog.csdn.net/everest_man/article/details/78985879 1.官网下载  Ultimate版本 2.http://idea.la ...

  4. Romantic---hdu2669(扩展欧几里德模板)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2669 详解:扩展欧几里德 #include <iostream> #include < ...

  5. mysql 数据操作 单表查询 group by 聚合函数 没有group by情况下

    聚合函数只能用在组里使用 #没有group by 则默认算作一组 取出所有员工的最高工资 mysql> select max(salary) from employee; +---------- ...

  6. Jenkins的持续集成

    持续集成:不需要人工干预,持久化.重复的运行一个任务.将代码自动的更新到最新,然后自动运行. 新建项目之前要再Jenkins的全局工具配置里面把git的路径设置好.[全局工具配置]-->[Git ...

  7. Linux光标移动异常

    刚刚安装完毕CentOS7.5,进行基础优化来着,发现我的光标具有如下神奇的故障. 无法移动到头部? 刚开始还以为是ISO镜像的问题,后校验了阿里云官网镜像的MD5值,和本地镜像MD5对比之后, 发现 ...

  8. 史上最全的MonkeyRunner自动化测试从入门到精通(1)

    原文地址https://zhuanlan.zhihu.com/p/26043620 MonkeyRunner使用 #-*- coding:utf-8 –*- from com.android.monk ...

  9. Spring—切点表达式

    摘要: Spring中的AspectJ切点表达式函数 切点表达式函数就像我们的GPS导航软件.通过切点表达式函数,再配合通配符和逻辑运算符的灵活运用,我们能很好定位到我们需要织入增强的连接点上.经过上 ...

  10. “4K云字库”基本框架图

    "4K云字库"基本框架图   谷歌的web-font,令"云字库"成为IT热点.   云字库,只是云计算的一个细小分支 ,而云计算的基础,是"大数据& ...