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 相关文章推荐
js类后台管理菜单类-MenuSwitch
Sep 12 Javascript
setTimeout与setInterval在不同浏览器下的差异
Jan 24 Javascript
js判断undefined变量类型使用typeof
Jun 03 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
Jun 17 Javascript
jquery网页元素拖拽插件效果及实现
Aug 05 Javascript
javascript记录文本框内文字个数检测文字个数变化
Oct 14 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
Jul 22 Javascript
VUE实现日历组件功能
Mar 13 Javascript
js实现延迟加载的几种方法
Apr 24 Javascript
React Native基础入门之初步使用Flexbox布局
Jul 02 Javascript
vue2中,根据list的id进入对应的详情页并修改title方法
Aug 24 Javascript
在Vue中获取自定义属性方法:data-id的实例
Sep 09 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
在Windows版的PHP中使用ADO
2006/10/09 PHP
php 无限级数据JSON格式及JS解析
2010/07/17 PHP
php中通过Ajax如何实现异步文件上传的代码实例
2011/05/07 PHP
使用php get_headers 判断URL是否有效的解决办法
2013/04/27 PHP
PHP编程获取各个时间段具体时间的方法
2017/05/26 PHP
PHP数组对象与Json转换操作实例分析
2019/10/22 PHP
Ext JS Grid在IE6 下宽度的问题解决方法
2009/02/15 Javascript
从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
2011/02/23 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
2013/05/27 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
jQuery on()方法使用技巧详解
2015/04/16 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
2015/06/26 Javascript
jQuery实现的左右移动焦点图效果
2016/01/14 Javascript
全面介绍javascript实用技巧及单竖杠
2016/07/18 Javascript
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
js实现随机数字字母验证码
2017/06/19 Javascript
vue webpack实用技巧总结
2018/04/24 Javascript
React项目动态设置title标题的方法示例
2018/09/26 Javascript
Vue 中如何正确引入第三方模块的方法步骤
2019/05/05 Javascript
linux系统使用python获取内存使用信息脚本分享
2014/01/15 Python
浅谈python import引入不同路径下的模块
2017/07/11 Python
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
2018/02/23 Python
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
python 弹窗提示警告框MessageBox的实例
2019/06/18 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
Django用内置方法实现简单搜索功能的方法
2020/12/18 Python
Asics日本官网:鬼冢八喜郎创立的跑鞋运动品牌
2017/10/18 全球购物
行政助理岗位职责
2013/11/10 职场文书
学生会竞选演讲稿
2014/04/24 职场文书
服装设计专业自荐信
2014/06/17 职场文书
门面房租房协议书
2014/12/01 职场文书
2014幼儿园班主任工作总结
2014/12/04 职场文书
教育实习指导教师评语
2014/12/31 职场文书
2019最新版试用期劳动合同模板!
2019/07/04 职场文书
十一月早安语录:把心放轻,人生就是一朵自在的云
2019/11/04 职场文书
Vue组件化(ref,props, mixin,.插件)详解
2022/05/15 Vue.js