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 getAttribute和setAttribute(取得和设置属性)的使用介绍
Jul 10 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
Sep 16 Javascript
javascript 密码框防止用户粘贴和复制的实现代码
Feb 17 Javascript
js确认框confirm()用法实例详解
Jan 07 Javascript
AngularJS基础 ng-href 指令用法
Aug 01 Javascript
jQuery时间日期三级联动(推荐)
Nov 27 Javascript
详解JavaScript的内置对象
Dec 07 Javascript
js的三种继承方式详解
Jan 21 Javascript
使用node.js对音视频文件加密的实例代码
Aug 30 Javascript
windows下更新npm和node的方法
Nov 30 Javascript
vue弹窗消息组件的使用方法
Sep 24 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
Mar 31 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 面向对象实现代码
2009/11/11 PHP
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
php读取der格式证书乱码解决方法
2015/06/22 PHP
smarty中改进truncate使其支持中文的方法
2016/05/30 PHP
Laravel5.1自定义500错误页面示例
2016/10/09 PHP
PHP Include文件实例讲解
2019/02/15 PHP
javascript中的this详解
2014/12/08 Javascript
Javascript闭包用法实例分析
2015/01/23 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
BootStrap glyphicon图标无法显示的解决方法
2016/09/06 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
微信小程序 location API接口详解及实例代码
2016/10/12 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
2016/11/21 Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
2016/11/24 Javascript
vue中使用 pako.js 解密 gzip加密字符串的方法
2019/06/10 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
2020/08/07 Javascript
[02:50]【扭转乾坤,只此一招】DOTA2全新版本永雾林渊开启新篇章
2020/12/24 DOTA
python shell根据ip获取主机名代码示例
2017/11/25 Python
python3大文件解压和基本操作
2017/12/15 Python
Python实现模拟登录网易邮箱的方法示例
2018/07/05 Python
python 调用有道api接口的方法
2019/01/03 Python
python导入坐标点的具体操作
2019/05/10 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
纯CSS3实现Material Design效果
2017/03/09 HTML / CSS
泰海淘:泰国king Power王权免税集团旗下跨境海淘综合型电商
2020/07/26 全球购物
工商企业管理应届生求职信
2013/11/03 职场文书
应用化学专业职业生涯规划书
2013/12/31 职场文书
竟聘演讲稿范文
2013/12/31 职场文书
中级会计职业生涯规划范文
2014/01/16 职场文书
大学秋游活动方案
2014/02/11 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
2014年驾驶员工作总结
2014/11/18 职场文书
2015年初中元旦晚会活动总结
2014/11/28 职场文书
保研推荐信格式
2015/03/25 职场文书
介绍信应该怎么开?
2019/04/03 职场文书
Golang中异常处理机制详解
2021/06/08 Golang