vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)


Posted in Javascript onJune 04, 2019

在新建好的项目中,一般执行npm run build就是打包了,但此时只能打包到一个环境,不同环境需要配置不同的地址,可以手动更改接口的地址,也可以自行配置命令而不需要每次打包进行地址切换,步骤如下:

文件结构如下图:

vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)

1)在config文件内新建test.env.js文件:

'use strict'
module.exports = {
  NODE_ENV: '"testing"',
  ENV_CONFIG:'"test"'
}

2)修改config内的prod.env.js文件:

'use strict'
  module.exports = {
   NODE_ENV: '"production"',
   ENV_CONFIG:'"prod"'
  }

3)对build中webpack.prod.conf.js做如下修改:

// const env = require('../config/prod.env') //原始代码

或者为

// const env = process.env.NODE_ENV === 'testing' //原始代码
//  ? require('../config/test.env')
//  : require('../config/prod.env')
// console.log(process.env.NODE_ENV);

修改为:

const env = config.build[process.env.env_config+'Env']

4)config中的index.js 文件中build部分代码修改如下:

build: {
  prodEnv: require('./prod.env'),
  testEnv: require('./test.env'),
  // Template for index.html
  index: path.resolve(__dirname, '../dist/index.html'),
 // ····余下的代码就不写了
}

5)确认安装cross-env

npm install cross-env ?save-dev

6)对build文件夹下的build.js的修改:

'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')

// const spinner = ora('building for production...')  //注释掉
var spinner = ora('building for ' + process.env.NODE_ENV + ' of ' + process.env.env_config+ ' mode...' )

spinner.start()

7)修改package.json文件(在script里面添加):

"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",
 "lint": "eslint --ext .js,.vue src test/unit test/e2e/specs",
 "build": "node build/build.js",
 "build--test": "cross-env NODE_ENV=testing env_config=test node build/build.js",
 "build--prod": "cross-env NODE_ENV=production env_config=prod node build/build.js"
},

8)在common文件下新建env.js,对环境进行判断并切换,内容如下:

/*
 * 配置编译环境和线上环境之间的切换
 * baseUrl: 域名地址
 * routerMode: 路由模式
 */
let baseUrl = '';
let routerMode = 'history';
let DEBUG = false;
let cancleHTTP = [];//取消请求头设置;
//注:下面的baseUrl地址为假地址,只是模拟的,无法调通。
if (process.env.NODE_ENV == 'development') {
  baseUrl = "https://10.248.65.100/GetTravelMethod";
  DEBUG = true;
}else if(process.env.NODE_ENV == 'production'){
  baseUrl = "https://10.248.65.200/GetTravelMethod";
  DEBUG = false;
}else if(process.env.NODE_ENV == 'testing'){
  baseUrl = "https://10.248.65.150/GetTravelMethod";
  DEBUG = false;
}

export{
  baseUrl,
  routerMode,
  DEBUG,
  ROLE,
  cancleHTTP
}

想要test环境下则运行:

npm run build--test

相应的改为production环境则运行:

npm run build--prod

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript下申明对象的几种方法小结
Oct 02 Javascript
点击弹出层外区域关闭弹出层jquery特效示例
Aug 25 Javascript
js使用eval解析json(js中使用json)
Jan 17 Javascript
javascript事件函数中获得事件源的两种不错方法
Mar 17 Javascript
jQuery点击按钮弹出遮罩层且内容居中特效
Dec 14 Javascript
想学习javascript JS和jQuery哪个重要 先学哪个
Dec 11 Javascript
微信小程序 MD5加密登录密码详解及实例代码
Jan 12 Javascript
详解vue express启动数据服务
Jul 05 Javascript
深入浅析Node.js单线程模型
Jul 10 Javascript
Vue.js 2.x之组件的定义和注册图文详解
Jun 19 Javascript
jQuery+PHP实现上传裁剪图片
Jun 29 jQuery
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
Jan 23 Javascript
JavaScript实现页面中录音功能的方法
Jun 04 #Javascript
vue elementUI 表单校验功能之数组多层嵌套
Jun 04 #Javascript
小程序根据手机机型设置自定义底部导航距离
Jun 04 #Javascript
js回文数的4种判断方法示例
Jun 04 #Javascript
Vue对象赋值视图不更新问题及解决方法
Jun 03 #Javascript
在 Vue 应用中使用 Netlify 表单功能的方法详解
Jun 03 #Javascript
JavaScript之数组扁平化详解
Jun 03 #Javascript
You might like
PHP学习之整理字符串
2011/04/17 PHP
PHP根据IP地址获取所在城市具体实现
2013/11/27 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
2015/12/22 PHP
PDO实现学生管理系统
2020/03/21 PHP
ExtJS 学习专题(一) 如何应用ExtJS(附实例)
2010/03/11 Javascript
js无刷新操作table的行和列
2014/03/27 Javascript
js Calender控件使用详解
2015/01/05 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
2016/10/27 Javascript
JavaScript交换两个变量值的七种解决方案
2016/12/01 Javascript
JS实现电商放大镜效果
2017/08/24 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
2017/08/25 Javascript
使用vue-router beforEach实现判断用户登录跳转路由筛选功能
2018/06/25 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
nodejs基础之多进程实例详解
2018/12/27 NodeJs
浅析vue中的MVVM实现原理
2019/03/04 Javascript
jQuery位置选择器用法实例分析
2019/06/28 jQuery
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
[11:42]2018DOTA2国际邀请赛寻真——OG卷土重来
2018/08/17 DOTA
[原创]Python入门教程4. 元组基本操作
2018/10/31 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
2019/01/29 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
2019/04/11 Python
在python中,使用scatter绘制散点图的实例
2019/07/03 Python
Django项目后台不挂断运行的方法
2019/08/31 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
2020/03/09 Python
python实现将range()函数生成的数字存储在一个列表中
2020/04/02 Python
Paul Smith英国官网:英国国宝级时装品牌
2019/03/21 全球购物
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
董事长助理岗位职责
2014/02/18 职场文书
幽默自我介绍演讲稿
2014/08/21 职场文书
大学生联谊活动策划书(光棍节)
2014/10/10 职场文书
党风廉政教育心得体会2016
2016/01/22 职场文书
python not运算符的实例用法
2021/06/30 Python
浅谈TypeScript 索引签名的理解
2021/10/16 Javascript
httpclient调用远程接口的方法
2022/08/14 Java/Android