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 相关文章推荐
JQuery 中几个类选择器的简单使用介绍
Mar 14 Javascript
防止登录页面出现在frame中js代码
Jul 22 Javascript
基于JS实现简单的样式切换效果代码
Sep 04 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
Dec 11 Javascript
微信公众号 客服接口的开发实例详解
Sep 28 Javascript
Vue.js一个文件对应一个组件实践
Oct 27 Javascript
jquery.Callbacks的实现详解
Nov 30 Javascript
vue.js树形组件之删除双击增加分支实例代码
Feb 28 Javascript
JS实现的简单表单验证功能完整实例
Oct 14 Javascript
js canvas实现画图、滤镜效果
Nov 27 Javascript
vue cli3.0 引入eslint 结合vscode使用
May 27 Javascript
TypeScript 使用 Tuple Union 声明函数重载
Apr 07 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
第十二节 类的自动加载 [12]
2006/10/09 PHP
php读取html并截取字符串的简单代码
2009/11/30 PHP
判断是否为指定长度内字符串的php函数
2010/02/16 PHP
json 实例详细说明教程
2009/10/31 Javascript
用jquery与css打造个性化的单选框和复选框
2010/10/20 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
用Jquery选择器计算table中的某一列某一行的合计
2014/08/13 Javascript
js中键盘事件实例简析
2015/01/10 Javascript
JavaScript jquery及AJAX小结
2016/01/24 Javascript
老生常谈JavaScript数组的用法
2016/06/10 Javascript
javascript实现鼠标点击页面 移动DIV
2016/12/02 Javascript
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
React+react-dropzone+node.js实现图片上传的示例代码
2017/08/23 Javascript
js 显示日期时间的实例(时间过一秒加1)
2017/10/25 Javascript
layui异步加载table表中某一列数据的例子
2019/09/16 Javascript
Vue实现仿iPhone悬浮球的示例代码
2020/03/13 Javascript
JS前后端实现身份证号验证代码解析
2020/07/23 Javascript
[51:07]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
利用Python如何批量更新服务器文件
2018/07/29 Python
对python中Librosa的mfcc步骤详解
2019/01/09 Python
Python 抓取微信公众号账号信息的方法
2019/06/14 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
2020/02/11 Python
python列表切片和嵌套列表取值操作详解
2020/02/27 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
一款恶搞头像特效的制作过程 利用css3和jquery
2014/11/21 HTML / CSS
美国现代家具购物网站:LexMod
2019/01/09 全球购物
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2012/12/13 面试题
Shell编程面试题
2012/05/30 面试题
初一英语教学反思
2014/01/11 职场文书
村委会主任先进事迹
2014/01/15 职场文书
一年级学生期末评语
2014/04/21 职场文书
大气污染防治方案
2014/05/19 职场文书
安装工程师岗位职责
2015/02/13 职场文书
2015年成本会计工作总结
2015/10/14 职场文书
go语言中fallthrough的用法说明
2021/05/06 Golang