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 相关文章推荐
[全兼容哦]--实用、简洁、炫酷的页面转入效果loing
May 07 Javascript
再谈javascript面向对象编程
Mar 18 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
May 20 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
Apr 26 Javascript
JavaScript ES6中export、import与export default的用法和区别
Mar 14 Javascript
JavaScript循环_动力节点Java学院整理
Jun 28 Javascript
JavaScript判断变量名是否存在数组中的实例
Dec 28 Javascript
详解Vue中watch对象内属性的方法
Feb 01 Javascript
Vue2.0 实现页面缓存和不缓存的方式
Nov 12 Javascript
vue实现浏览器全屏展示功能
Nov 27 Javascript
js实现移动端吸顶效果
Jan 08 Javascript
Vue watch响应数据实现方法解析
Jul 10 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下将图片以二进制存入mysql数据库中并显示的实现代码
2010/05/27 PHP
PHP中实现获取IP和地理位置类分享
2015/02/10 PHP
WordPress中缩略图的使用以及相关技巧
2015/11/24 PHP
PHP 常用时间函数资料整理
2016/10/22 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
PHP实现的激活用户注册验证邮箱功能示例
2017/06/06 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
javascript编程起步(第二课)
2007/01/10 Javascript
json跟xml的对比分析
2008/06/10 Javascript
Knockout visible绑定使用方法
2013/11/15 Javascript
再探JavaScript作用域
2014/09/24 Javascript
node.js中的fs.readdirSync方法使用说明
2014/12/17 Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
2016/04/12 Javascript
url传递的参数值中包含&时,url自动截断问题的解决方法
2016/08/02 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
2017/03/31 Javascript
微信小程序 确认框的实现(附代码)
2019/07/23 Javascript
Angular8基础应用之表单及其验证
2019/08/11 Javascript
VUE使用axios调用后台API接口的方法
2020/08/03 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
python使用marshal模块序列化实例
2014/09/25 Python
python高手之路python处理excel文件(方法汇总)
2016/01/07 Python
Python Django使用forms来实现评论功能
2016/08/17 Python
python实现两个dict合并与计算操作示例
2019/07/01 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
Python networkx包的实现
2020/02/14 Python
matplotlib之pyplot模块之标题(title()和suptitle())
2021/02/22 Python
使用Html5多媒体实现微信语音功能
2019/07/26 HTML / CSS
雅萌 (YA-MAN) :日本美容家电领域的龙头企业
2017/05/12 全球购物
如何让Java程序执行效率更高
2014/06/25 面试题
上海奥佳笔试题面试题
2016/11/16 面试题
AURALog面试题软件测试方面
2013/10/22 面试题
出纳员岗位职责风险
2014/03/06 职场文书
监察建议书范文
2014/03/12 职场文书
2016年“节能宣传周”活动总结
2016/04/05 职场文书
创业计划书之农家乐
2019/10/09 职场文书
Python爬虫基础初探selenium
2021/05/31 Python