Vue项目分环境打包的实现步骤


Posted in Javascript onApril 02, 2018

在项目开发中,我们的项目一般分为开发版、测试版、Pre版、Prod版。Vue-cli的默认环境一只有dev和prod两个,之前每次要发布测试版或Pre版都是修改了源码中API地址后打包,这样很麻烦。如果能根据不同环境打包就完美了。网上搜集了许多资料,现在可以分环境打包程序了,至于怎么打,接着住下看吧。

第1步:安装cross-env

在项目目录下运行如下命令安装cross-env,我的ide是webstorm,要以直接在ide里的Terminal窗口中运行,也可能通过windows的CMD、Linux的Terminal定位到项目根目录运行下面的命令。

npm i --save-dev cross-env

第2步:修改各环境下的参数

在config/目录下添加test.env.js、pre.env.js。修改prod.env.js里的内容,修改后的内容如下:

'use strict'
module.exports = {
 NODE_ENV: '"production"',
 EVN_CONFIG:'"prod"',
 API_ROOT:'"/apis/v1"'
}

分别对test.env.js和pre.env.js文件内容进修修改,修改后的内容如下:

'use strict'
module.exports = {
 NODE_ENV: '"testing"',
 EVN_CONFIG:'"test"',
 API_ROOT:'"/test/apis/train"'
}
'use strict'
module.exports = {
 NODE_ENV: '"presentation"',
 EVN_CONFIG:'"pre"',
 API_ROOT:'"/pre/apis/train"'
}

对dev.env.js文件内容进行修改,修改后的内容如下。dev环境配制了服务代理,API_ROOT前的api是配制的代理地址。

module.exports = merge(prodEnv, {
 NODE_ENV: '"development"',
 VN_CONFIG: '"dev"',
 API_ROOT: '"api/apis/v1"'
})

第3步:修改项目package.json文件

对package.json文件中的scripts内容进行个性,添加上新定义的几种环境的打包过程,里的参数与前面的调协保持一致。

"scripts": {
  "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
  "start": "npm run dev",
  "build": "node build/build.js",
  "build:test": "cross-env NODE_ENV=production env_config=test node build/build.js",
  "build:pre": "cross-env NODE_ENV=production env_config=pre node build/build.js",
  "build:prod": "cross-env NODE_ENV=production env_config=prod node build/build.js"
 },

在这里,NODE_ENV最好都设成production,因为在utils.js只做了production一种判定,亲测不会影响各环境API参数。 ##第4步:修改config/index.js

修改config/index.js文件中build参数,这里的参数会在build/webpackage.prod.conf.js中使用到

build:{
  // Template for index.html
  // 添加test pre prod 三处环境的配制
  prodEnv: require('./prod.env'),
  preEnv: require('./pre.env'),
  testEnv: require('./test.env'),
  //下面为原本的内容,不需要做任何个性
  index:path.resolve(__dirname,'../dist/index.html'),

第5步:在webpackage.prod.conf.js中使用构建环境参数

对build/webpackage.prod.conf.js文件进行修改,调整env常量的生成方式。

// 个性env常量的定义
// const env = require('../config/prod.env')
const env = config.build[process.env.env_config+'Env']

第6步:调整build/build.js

删除process.env.NODE_ENV的赋值,修改spinner的定义,调整后的内容如下:

'use strict'
require('./check-versions')()
// 注释掉的代码
// process.env.NODE_ENV = 'production'
const ora = require('ora')
const rm = require('rimraf')
const path = require('path')
const chalk = require('chalk')
const webpack = require('webpack')
const config = require('../config')
const webpackConfig = require('./webpack.prod.conf')
// 修改spinner的定义
// const spinner = ora('building for production...')
var spinner = ora('building for ' + process.env.NODE_ENV + ' of ' + process.env.env_config+ ' mode...' )
spinner.start()
//更多的其它内容,不需要做任何调整的内容 ...

补充:

vue2+webpack怎样分环境打包

今年有机会做了一个vue2的单页面应用的项目,从开发到上线经历了两个环境。测试环境以及正式环境我都是跑npm run build。这两个环境的变量当前是不一样的,每次打包都要去改变量,感觉有点小麻烦。后来参考同事的,他们项目里面分环境跑不同的命令,得到不同的包。例如测试环境npm run test ,正式环境 npm run build。

需在文件config/prod.env.js配置

const target = process.env.npm_lifecycle_event;
if (target == 'test') {

//测试

var obj = {

NODE_ENV: '"production"',

//post用当前域名

API_ROOT: '""',

//数据字典

API_ROOT_DICT:'"http://test.gw.fdc.com.cn"',

}
}else {

//线上

var obj = {

NODE_ENV: '"production"',

//post用当前域名

API_ROOT: '""',

//数据字典

API_ROOT_DICT:'"http://gw.fdc.com.cn"',

}
}
module.exports = obj;

npm 提供一个npm_lifecycle_event变量,返回当前正在运行的脚本名称,比如pretest、test、posttest等等。所以,可以利用这个变量,在同一个脚本文件里面,为不同的npm scripts命令编写代码。

总结

以上所述是小编给大家介绍的Vue项目分环境打包的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Javascript前端UI框架Kit使用指南之kitjs事件管理
Nov 28 Javascript
javascript封装的sqlite操作类实例
Jul 17 Javascript
微信小程序 122100版本更新问题解决方案
Dec 22 Javascript
jQuery插件HighCharts绘制2D金字塔图效果示例【附demo源码下载】
Mar 09 Javascript
javaScript实现滚动条事件详解
Mar 24 Javascript
老生常谈JavaScript面向对象基础与this指向问题
Oct 16 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
Jan 23 jQuery
重新认识vue之事件阻止冒泡的实现
Aug 02 Javascript
微信小程序导航栏跟随滑动效果的实现代码
May 14 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
Aug 03 Javascript
前端vue+elementUI如何实现记住密码功能
Sep 20 Javascript
three.js 实现露珠滴落动画效果的示例代码
Mar 01 Javascript
详解webpack-dev-server的简单使用
Apr 02 #Javascript
webpack v4 从dev到prd的方法
Apr 02 #Javascript
vue axios登录请求拦截器
Apr 02 #Javascript
webpack+react+antd脚手架优化的方法
Apr 02 #Javascript
vue axios请求超时的正确处理方法
Apr 02 #Javascript
JavaScript 日期时间选择器一些小结
Apr 02 #Javascript
vue计算属性及使用详解
Apr 02 #Javascript
You might like
JAVA/JSP学习系列之四
2006/10/09 PHP
ThinkPHP框架实现session跨域问题的解决方法
2014/07/01 PHP
php+mysql结合Ajax实现点赞功能完整实例
2015/01/30 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
2012/05/14 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
2014/05/22 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
javascript 中的继承实例详解
2017/05/05 Javascript
浅析node应用的timing-attack安全漏洞
2018/02/28 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
[01:02:38]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第二场 1月10日
2021/03/11 DOTA
python判断字符串是否纯数字的方法
2014/11/19 Python
python使用fork实现守护进程的方法
2017/11/16 Python
解决phantomjs截图失败,phantom.exit位置的问题
2018/05/17 Python
Python实现的括号匹配判断功能示例
2018/08/25 Python
python爬取内容存入Excel实例
2019/02/20 Python
Python如何实现强制数据类型转换
2019/11/22 Python
Python实现猜年龄游戏代码实例
2020/03/25 Python
Python基于百度AI实现OCR文字识别
2020/04/02 Python
浅谈keras使用中val_acc和acc值不同步的思考
2020/06/18 Python
使用css3实现超炫的loading加载动画效果
2014/05/07 HTML / CSS
Adobe Html5 Extension开发初体验图文教程
2017/11/14 HTML / CSS
Roxy美国官网:澳大利亚冲浪、滑雪健身品牌
2016/07/30 全球购物
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
NYX Professional Makeup英国官网:美国平价专业彩妆品牌
2019/11/13 全球购物
PHP引擎php.ini参数优化深入讲解
2021/03/24 PHP
银行办理业务介绍信
2014/01/18 职场文书
学生安全教育材料
2014/02/14 职场文书
事业单位绩效考核实施方案
2014/03/27 职场文书
银行催款通知书
2015/04/17 职场文书
开除通知书范本
2015/04/25 职场文书
浅谈Redis的几个过期策略
2021/05/27 Redis
一篇文章搞懂python混乱的切换操作与优雅的推导式
2021/08/23 Python
Python FuzzyWuzzy实现模糊匹配
2022/04/28 Python