vue项目中运用webpack动态配置打包多种环境域名的方法


Posted in Javascript onJune 24, 2019

在如今前后端分离,各种框架盛行的前端界,对项目的打包要求也越来越复杂,本人分享一个vue项目里,根据命令行输入不同的命令,打包出不同环境域名的方法。(欢迎纠错,谢谢。)

1. 安装插件 cross-env,npm install cross-env --save -dev,用于配置命令行输入命令。

2. 修改package.json里的script命令:

配置了test(测试),ready(预发布),prod(正式)三种环境,npm run build 默认设置成 npm run build:prod,也可以根据自己需求,配置更多的命令,参数自定。网上看到有人去修改NODE_ENV这个默认的参数,配置文件里有很多地方都引用了这个参数。本人认为这个默认参数可以不改,自己重新增加一个参数就行(这里增加一个BUILD_ENV参数)。

"scripts": {
  "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
  "start": "npm run dev",
  "unit": "jest --config test/unit/jest.conf.js --coverage",
  "e2e": "node test/e2e/runner.js",
  "test": "npm run unit && npm run e2e",
  "build": "npm run build:prod",
  "build:test": "cross-env NODE_ENV=production BUILD_ENV=test node build/build.js",
  "build:ready": "cross-env NODE_ENV=production BUILD_ENV=ready node build/build.js",
  "build:prod": "cross-env NODE_ENV=production BUILD_ENV=prod node build/build.js"
 },

3. 修改config目录下的prod.env.js

里面的默认配置是这样:只有一个NODE_ENV

'use strict'
module.exports = {
 NODE_ENV: '"production"', 
}

修改后的配置:

'use strict'
const BUILD_ENV = process.env.BUILD_ENV
let baseUrl 
switch (BUILD_ENV) {
 case 'test':
  baseUrl = 'api.test.com'
  break; 
 case 'ready':
  baseUrl = 'api.ready.com'
 break;
 case 'prod':
  baseUrl = 'api.prod.com'
 break;
}
module.exports = {
 NODE_ENV: '"production"', 
 BUILD_ENV: '"' + BUILD_ENV + '"',
 baseUrl: '"' + baseUrl + '"',
}

修改的配置增加了BUILD_ENV和baseUrl两个属性, 属性值记得拼接双引号 ,process.env.BUILD_ENV就是命令行里输入的BUILD_ENV的值,再根据BUILD_ENV进行相应的判断。在项目里,就可以通过process.env拿到prod.env.js暴露出去的3个属性。比如接口文件,就需要process.env.baseUrl来动态修改不同环境域名。

总结

以上所述是小编给大家介绍的vue项目中运用webpack动态配置打包多种环境域名的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
JS 控件事件小结
Oct 31 Javascript
javascript中怎么做对象的类型判断
Nov 11 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
Jan 27 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
Sep 21 Javascript
jquery.cookie.js的介绍与使用方法
Feb 09 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
Jun 14 Javascript
Mac中安装nvm的教程分享
Dec 11 Javascript
基于jQuery实现的设置文本区域的光标位置
Jun 15 jQuery
使用D3.js构建实时图形的示例代码
Aug 28 Javascript
详解html-webpack-plugin插件(用法总结)
Sep 12 Javascript
微信小程序实现点击按钮后修改颜色
Dec 05 Javascript
javascript实现前端input密码输入强度验证
Jun 24 Javascript
Vue.js+cube-ui(Scroll组件)实现类似头条效果的横向滚动导航条
Jun 24 #Javascript
JavaScript学习教程之cookie与webstorage
Jun 23 #Javascript
React组件对子组件children进行加强的方法
Jun 23 #Javascript
vue使用websocket的方法实例分析
Jun 22 #Javascript
JS实现简单的文字无缝上下滚动功能示例
Jun 22 #Javascript
js图片查看器插件用法示例
Jun 22 #Javascript
JS实现继承的几种常用方式示例
Jun 22 #Javascript
You might like
php中Session的生成机制、回收机制和存储机制探究
2014/08/19 PHP
curl和libcurl的区别简介
2015/07/01 PHP
php使用number_format函数截取小数的方法分析
2016/05/27 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
Microsoft Ajax Minifier 压缩javascript的方法
2010/03/05 Javascript
jQuery多级弹出菜单插件ZoneMenu
2014/12/18 Javascript
学习JavaScript设计模式(继承)
2015/11/26 Javascript
html+js+highcharts绘制圆饼图表的简单实例
2016/08/04 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
2017/06/17 Javascript
Mac下通过brew安装指定版本的nodejs教程
2018/05/17 NodeJs
vue中$set的使用(结合在实际应用中遇到的坑)
2018/07/10 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
js时间转换毫秒的实例代码
2019/08/21 Javascript
Vue父组件监听子组件生命周期
2020/09/03 Javascript
[09:40]DAC2018 4.5 SOLO赛 MidOne vs Miracle
2018/04/06 DOTA
[47:03]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第二场 12.10
2020/12/13 DOTA
Python专用方法与迭代机制实例分析
2014/09/15 Python
为Python的Tornado框架配置使用Jinja2模板引擎的方法
2016/06/30 Python
Python实现括号匹配方法详解
2020/02/10 Python
基于spring boot 日志(logback)报错的解决方式
2020/02/20 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
2020/05/20 Python
Python常用数据分析模块原理解析
2020/07/20 Python
Python 高效编程技巧分享
2020/09/10 Python
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
电气专业推荐信范文
2013/11/18 职场文书
境外导游求职信
2014/02/27 职场文书
新闻专业毕业生英文求职信
2014/03/19 职场文书
行政管理专业求职信
2014/07/06 职场文书
群教班子对照检查材料
2014/08/26 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
小学生光盘行动倡议书
2015/04/28 职场文书
2015年保卫科工作总结
2015/05/14 职场文书
居安思危观后感
2015/06/11 职场文书
2016年国庆节宣传标语
2015/11/25 职场文书
vue项目打包后路由错误的解决方法
2022/04/13 Vue.js