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 相关文章推荐
让广告代码不再影响你的网页加载速度
Jul 07 Javascript
JavaScrip单线程引擎工作原理分析
Sep 04 Javascript
JS基于Ajax实现的网页Loading效果代码
Oct 27 Javascript
详解JavaScript中|单竖杠运算符的使用方法
May 23 Javascript
BootStrap Table 分页后重新搜索问题的解决办法
Aug 08 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
Oct 01 Javascript
JavaScript实现经典排序算法之选择排序
Dec 28 Javascript
基于JavaScript实现拖动滑块效果
Feb 16 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
Mar 06 Javascript
微信小程序实现简单评论功能
Nov 28 Javascript
微信小程序导航栏跟随滑动效果的实现代码
May 14 Javascript
js tab栏切换代码实例解析
Sep 03 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为SHOPEX增加日志功能代码
2010/07/02 PHP
php加速器eAccelerator的配置参数、API详解
2014/05/05 PHP
php获取Google机器人访问足迹的方法
2015/04/15 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
2018/10/31 PHP
Yii框架常见缓存应用实例小结
2019/09/09 PHP
jQuery 位置函数offset,innerWidth,innerHeight,outerWidth,outerHeight,scrollTop,scrollLeft
2010/03/23 Javascript
ExtJS 设置级联菜单的默认值
2010/06/13 Javascript
javascript利用初始化数据装配模版的实现代码
2010/11/17 Javascript
JS正则表达式获取分组内容的方法详解
2013/11/15 Javascript
Jquery对select的增、删、改、查操作
2015/02/06 Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
2015/03/27 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
2016/05/31 Javascript
easyui-datagrid特殊字符不能显示的处理方法
2017/04/12 Javascript
xmlplus组件设计系列之文本框(TextBox)(3)
2017/05/03 Javascript
详解Vuex中mapState的具体用法
2017/09/28 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
2018/03/06 Javascript
Python实现从脚本里运行scrapy的方法
2015/04/07 Python
Python编程之string相关操作实例详解
2017/07/22 Python
django富文本编辑器的实现示例
2019/04/10 Python
pyqt5使用按钮进行界面的跳转方法
2019/06/19 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
如何利用python进行时间序列分析
2020/08/04 Python
size?瑞典:英国伦敦的球鞋精品店
2018/03/01 全球购物
手工制作的男士奢华英国鞋和服装之家:Goodwin Smith
2019/06/21 全球购物
信息部岗位职责
2013/11/12 职场文书
《大作家的小老师》教学反思
2014/04/16 职场文书
大专生自荐书范文
2014/06/22 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
2015年推广普通话演讲稿
2015/03/20 职场文书
2015年度保密工作总结
2015/04/24 职场文书
工作失职自我检讨书
2015/05/05 职场文书
民事答辩状格式范文
2015/05/21 职场文书
解决golang 关于全局变量的坑
2021/05/06 Golang
Java9新特性对HTTP2协议支持与非阻塞HTTP API
2022/03/16 Java/Android