基于vue cli 通过命令行传参实现多环境配置


Posted in Javascript onJuly 12, 2018

大多数项目都有生产环境和开发环境,一般情况下应该够了,但是有时候还需要sit,uat,本地等环境,这时候假如要通过注释的方式切换环境就相当麻烦了. 如果可以像下面这样切换环境就方便了

npm run serve //默认本地开发环境

npm run serve -sit //本地开发中使用sit环境

npm run serve -uat //本地开发中使用uat环境

npm run build //默认打包后使用生产环境

npm run build -local //打包后使用本地环境

npm run build -sit //打包后使用sit环境

`npm run build -uat //打包后使用uat环境

如果对@vue/cli还不熟的话,建议看看这篇文章https://3water.com/article/138055.htm

我们首先在根目录下面创建一个vue.config.js文件,如图

基于vue cli 通过命令行传参实现多环境配置 

vue.config.js代码如下:

const webpack = require('webpack')
const environment = require('./build/environment')
module.exports = {
 baseUrl: '/wxperp/',
 configureWebpack: {
 plugins: [
 new webpack.DefinePlugin({
 'process.env.STAGE': JSON.stringify(environment.stage),
 'process.env.LOCAL_URL': JSON.stringify(environment.localUrl)
 })
 ]
 }
}

new webpack.DefinePlugin的作用是允许你创建一个在编译时可以配置的全局常量

然后在根目录创建一个build文件夹,里面创建一个environment.js的文件

基于vue cli 通过命令行传参实现多环境配置 

environment.js代码如下:

const os = require('os')
// 获取命令行变量
const configArgv = JSON.parse(process.env.npm_config_argv)
const original = configArgv.original.slice(1)
const stage = original[1] ? original[1].replace(/-/g, '') : ''
// 本地ip地址
let localUrl
try {
 const network = os.networkInterfaces()
 localUrl = network[Object.keys(network)[0]][1].address
} catch (e) {
 localUrl = 'localhost'
}
localUrl = 'http://' + localUrl + '/'

module.exports = {
 stage, localUrl
}

这个stage就是你输入的变量,比如你输入 npm run serve -sit 那么stage的值就为sit

这个localUrl就是你本地的ip,不过很多人应该用不到,我们公司比较特殊,开发的时候,接口请求的地址都是请求的自己本地服务器, 如果不自动获取本地ip,那么每个同事都得在配置文件中保留一份自己得ip地址,很麻烦,所以就自动获取了.

接下来再src目录下面创建一个config.js,记得在main.js中引用这个config.js

基于vue cli 通过命令行传参实现多环境配置 

environment.js代码如下:

(() => {
 const urlMap = {
 local: process.env.LOCAL_URL + 'api',
 sit: 'http://xxx.xxx.xxx:xxxx/sit/api',
 uat: 'http://xxx.xxx.xxx:xxxx/uat/api',
 prod: 'http://xxx.xxx.xxx:xxxx/prod/api'
 }
 //sit,uat,prod
 let stage = process.env.STAGE
 //development,production
 const nodeEnv = process.env.NODE_ENV
 //nodeEnv为production并且stage不存在默认为生产环境
 if (nodeEnv === 'production' && !stage) {
 stage = 'prod'
 } else {
 //stage不存在默认为本地开发环境
 stage = stage || 'local'
 }
 console.log('ip:' + urlMap[stage])
})()

我们输入 npm run serve -sit ,页面打印如下:

基于vue cli 通过命令行传参实现多环境配置 

再??孪?process.env.NODE_ENV是@vue/cli提供的,貌似有三个值(development,production,test),

你运行 npm run serve 得到的就是development

你运行 npm run build 得到的就是production

你运行 npm run test 得到的就是test (我没试过)

我默认打包是打包生产环境,当然你也可以输入参数打包其他环境

总结

以上所述是小编给大家介绍的基于vue cli 通过命令行传参实现多环境配置,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js wmp操作代码小结(音乐连播功能)
Nov 08 Javascript
js 实现图片预加载(js操作 Image对象属性complete ,事件onload 异步加载图片)
Mar 25 Javascript
jQuery JSON实现无刷新三级联动实例探讨
May 28 Javascript
js 绑定键盘鼠标事件示例代码
Feb 12 Javascript
原生javascript实现简单的datagrid数据表格
Jan 02 Javascript
jQuery绑定事件on()与弹窗的简要概述
Apr 27 Javascript
关于Iframe父页面与子页面之间的相互调用
Nov 22 Javascript
深入了解JavaScript的逻辑运算符(与、或)
Dec 20 Javascript
详解JS中的快速排序与冒泡
Jan 10 Javascript
Vue入门之animate过渡动画效果
Apr 08 Javascript
使用vue完成微信公众号网页小记(推荐)
Apr 28 Javascript
详解Vue调用手机相机和相册以及上传
May 05 Javascript
vue内置组件transition简单原理图文详解(小结)
Jul 12 #Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
Jul 11 #Javascript
vue.js实现的经典计算器/科学计算器功能示例
Jul 11 #Javascript
Vue.js实现的计算器功能完整示例
Jul 11 #Javascript
JavaScript类的继承方法小结【组合继承分析】
Jul 11 #Javascript
React中嵌套组件与被嵌套组件的通信过程
Jul 11 #Javascript
JSON数据中存在单个转义字符“\”的处理方法
Jul 11 #Javascript
You might like
php基础知识:类与对象(3) 构造函数和析构函数
2006/12/13 PHP
PHP常用的小程序代码段
2015/11/14 PHP
php实现数组重复数字统计实例
2018/09/30 PHP
laravel-admin 中列表筛选方法
2019/10/03 PHP
Javascript笔记一 js以及json基础使用说明
2010/05/22 Javascript
关于URL中的特殊符号使用介绍
2011/11/03 Javascript
js常用代码段整理
2011/11/30 Javascript
使用apply方法处理数组的三个技巧[译]
2012/09/20 Javascript
javascript正则匹配汉字、数字、字母、下划线
2014/04/10 Javascript
原生javascript实现的分页插件pagenav
2014/08/28 Javascript
jquery+php实现滚动的数字特效
2015/11/29 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
vue读取本地的excel文件并显示在网页上方法示例
2019/05/29 Javascript
js对象属性名驼峰式转下划线的实例代码
2020/09/17 Javascript
js实现简单的点名器随机色实例代码
2020/09/20 Javascript
Python实现的简单发送邮件脚本分享
2014/11/07 Python
Python实现二叉搜索树
2016/02/03 Python
Python学生成绩管理系统简洁版
2020/04/05 Python
python编写弹球游戏的实现代码
2018/03/12 Python
Python实现定时精度可调节的定时器
2018/04/15 Python
python如何爬取个性签名
2018/06/19 Python
python使用Matplotlib画条形图
2020/03/25 Python
python批量从es取数据的方法(文档数超过10000)
2018/12/27 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
First Aid Beauty官网:FAB急救面霜
2018/05/24 全球购物
商业街策划方案
2014/05/31 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
老人再婚离婚协议书范本
2014/10/27 职场文书
单位未婚证明范本
2014/11/25 职场文书
2015商场元旦促销活动策划方案
2014/12/09 职场文书
骨干教师个人总结
2015/02/11 职场文书
担保贷款承诺书
2015/04/30 职场文书
2016领导干部廉洁从政心得体会
2016/01/19 职场文书
xhunter1.sys可以删除嘛? win11提示xhunter1.sys驱动不兼容解决办法
2022/09/23 数码科技