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 相关文章推荐
用prototype实现的简单小巧的多级联动菜单
Mar 24 Javascript
JavaScript 指导方针
Apr 05 Javascript
asp.net下利用js实现返回上一页的实现方法小集
Nov 24 Javascript
判断一个变量是数组Array类型的方法
Sep 16 Javascript
利用javascript数组长度循环数组内所有元素
Dec 27 Javascript
jQuery短信验证倒计时功能实现方法详解
May 25 Javascript
jQuery 获取select选中值及清除选中状态
Dec 13 Javascript
JS 调用微信扫一扫功能
Dec 22 Javascript
ReactNative页面跳转Navigator实现的示例代码
Aug 02 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
Jan 11 Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
Jul 19 Javascript
详解express使用vue-router的history踩坑
Jun 05 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
如何在PHP中使用Oracle数据库(1)
2006/10/09 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
2010/04/28 PHP
PHP判断一个gif图片是否为动态图片的方法
2014/11/19 PHP
WampServer搭建php环境时遇到的问题汇总
2015/07/23 PHP
PHP抽奖算法程序代码分享
2015/10/08 PHP
JavaScript 乱码问题
2009/08/06 Javascript
js中的前绑定和后绑定详解
2013/08/01 Javascript
jquery实现滑动特效代码
2015/08/10 Javascript
jQuery实现的简单提示信息插件
2015/12/08 Javascript
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
2017/09/28 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
js实现图片粘贴到网页
2019/12/06 Javascript
小程序如何定位所在城市及发起周边搜索
2020/02/11 Javascript
vue2.x数组劫持原理的实现
2020/04/19 Javascript
[02:34]DOTA2英雄基础教程 幽鬼
2014/01/02 DOTA
Python yield 使用方法浅析
2017/05/20 Python
Python更新所有已安装包的操作
2020/02/13 Python
Django前后端分离csrf token获取方式
2020/12/25 Python
CSS3教程(4):网页边框和网页文字阴影
2009/04/02 HTML / CSS
CSS3使用transition实现的鼠标悬停淡入淡出
2015/01/09 HTML / CSS
美国专业级皮肤病和spa品质护肤品的高级零售网站:SkinCareRx
2017/02/06 全球购物
size?德国官方网站:英国伦敦的球鞋精品店
2018/03/17 全球购物
经济实惠的豪华背包和行李袋:Packs Project
2018/10/17 全球购物
国际会议邀请函范文
2014/01/16 职场文书
乡镇网格化管理实施方案
2014/03/23 职场文书
村干部培训方案
2014/05/02 职场文书
学习方法演讲稿
2014/05/10 职场文书
企业宣传标语
2014/06/09 职场文书
cf战队收人口号
2014/06/21 职场文书
银行转正自我鉴定
2014/09/29 职场文书
群众路线学习心得体会范文
2014/11/05 职场文书
小学校长个人总结
2015/03/03 职场文书
审美与表现自我评价
2015/03/09 职场文书
建国70周年的心得体会(2篇)
2019/09/20 职场文书
python四种出行路线规划的实现
2021/06/23 Python
使用python绘制横竖条形图
2022/04/21 Python