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 相关文章推荐
js字符编码函数区别分析
Jun 05 Javascript
从js向Action传中文参数出现乱码问题的解决方法
Dec 29 Javascript
js实现选中复选框文字变色的方法
Aug 14 Javascript
angularjs 中$apply,$digest,$watch详解
Oct 13 Javascript
微信小程序 自定义对话框实例详解
Jan 20 Javascript
微信小程序 标签传入数据
May 08 Javascript
JS判断时间段的实现代码
Jun 14 Javascript
vue 实现复制内容到粘贴板clipboard的方法
Mar 17 Javascript
layui select获取自定义属性方法
Aug 15 Javascript
微信小程序使用二次贝塞尔曲线画波浪
Dec 25 Javascript
JS使用cookie保存用户登录信息操作示例
May 30 Javascript
微信小程序整个页面的自动适应布局的实现
Jul 12 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
wordpress自定义url参数实现路由功能的代码示例
2013/11/28 PHP
php判断linux下程序问题实例
2015/07/09 PHP
10个对初学者非常有用的PHP技巧
2016/04/06 PHP
PHP 与 UTF-8 的最佳实践详细介绍
2017/01/04 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
2018/03/31 PHP
javascript 动态添加表格行
2006/06/22 Javascript
JavaScript arguments 多参传值函数
2010/10/24 Javascript
jquery zTree异步加载简单实例分享
2013/02/05 Javascript
Google Dart编程语法和基本类型学习教程
2013/11/27 Javascript
javascript简单性能问题及学习笔记
2014/02/04 Javascript
javascript实现浏览器窗口传递参数的方法
2014/09/03 Javascript
jQuery之Deferred对象详解
2014/09/04 Javascript
js获取UserControl内容为拼html时提供方便
2014/11/02 Javascript
JavaScript设计模式之装饰者模式介绍
2014/12/28 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
dul无法加载bootstrap实现unload table/user恢复
2016/09/29 Javascript
基于ES6作用域和解构赋值详解
2017/11/03 Javascript
React事件处理的机制及原理
2018/12/03 Javascript
jQuery/JS监听input输入框值变化实例
2019/10/17 jQuery
谈谈JavaScript令人迷惑的==与+
2020/08/31 Javascript
Python def函数的定义、使用及参数传递实现代码
2014/08/10 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
在Python 中同一个类两个函数间变量的调用方法
2019/01/31 Python
Python OpenCV实现视频分帧
2019/06/01 Python
在tensorflow中实现屏蔽输出的log信息
2020/02/04 Python
Python 串口通信的实现
2020/09/29 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
基督教卡片、励志礼品、家居装饰等:DaySpring
2018/10/12 全球购物
解释DataSet(ds) 和 ds as DataSet 的含义
2014/07/27 面试题
护士岗位职责
2014/02/16 职场文书
工程安全员岗位职责
2014/03/09 职场文书
爱我中华演讲稿
2014/05/20 职场文书
群众路线党员自我评议范文2014
2014/09/24 职场文书
大学生团员个人总结
2015/02/14 职场文书
教你使用pyinstaller打包Python教程
2021/05/27 Python
springboot创建的web项目整合Quartz框架的项目实践
2022/06/21 Java/Android