工作中我们在开发过程中,有很多的开发环境,如果我们不进行统一配置,那么我们只能手动进行更改,这样会给我们带来诸多不便,所以我们要配置根据不同的环境来进行编译打包.

先看一下我的项目目录:

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

1.

  1. 'use strict'
  2. module.exports = {
  3. NODE_ENV: '"testing"',
  4. ENV_CONFIG:'"test"'
  5. }

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

2.

  1. 'use strict'
  2. module.exports = {
  3. NODE_ENV: '"production"',
  4. ENV_CONFIG:'"prod"'
  5. }

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

3.

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

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

4.

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

确认安装cross-env

5.

  1. npm install cross-env save-dev

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

6.

  1. 'use strict'
  2. require('./check-versions')()
  3.  
  4. // process.env.NODE_ENV = 'production' //注释掉
  5.  
  6. const ora = require('ora')
  7. const rm = require('rimraf')
  8. const path = require('path')
  9. const chalk = require('chalk')
  10. const webpack = require('webpack')
  11. const config = require('../config')
  12. const webpackConfig = require('./webpack.prod.conf')
  13.  
  14. // const spinner = ora('building for production...') //注释掉
  15. var spinner = ora('building for ' + process.env.NODE_ENV + ' of ' + process.env.env_config+ ' mode...' )
  16.  
  17. spinner.start()

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

7.

  1. "scripts": {
  2. "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
  3. "start": "npm run dev",
  4. "unit": "jest --config test/unit/jest.conf.js --coverage",
  5. "e2e": "node test/e2e/runner.js",
  6. "test": "npm run unit && npm run e2e",
  7. "lint": "eslint --ext .js,.vue src test/unit test/e2e/specs",
  8. "build": "node build/build.js",
  9. "build--test": "cross-env NODE_ENV=testing env_config=test node build/build.js",
  10. "build--prod": "cross-env NODE_ENV=production env_config=prod node build/build.js"
  11. },

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

8.

  1. /*
  2. * 配置编译环境和线上环境之间的切换
  3. * baseUrl: 域名地址
  4. * routerMode: 路由模式
  5. */
  6. let baseUrl = '';
  7. let routerMode = 'history';
  8. let DEBUG = false;
  9. let cancleHTTP = [];//取消请求头设置;
  10. //注:下面的baseUrl地址为假地址,只是模拟的,无法调通。
  11. if (process.env.NODE_ENV == 'development') {
  12. baseUrl = "https://10.248.65.100/GetTravelMethod";
  13. DEBUG = true;
  14. }else if(process.env.NODE_ENV == 'production'){
  15. baseUrl = "https://10.248.65.200/GetTravelMethod";
  16. DEBUG = false;
  17. }else if(process.env.NODE_ENV == 'testing'){
  18. baseUrl = "https://10.248.65.150/GetTravelMethod";
  19. DEBUG = false;
  20. }
  21.  
  22. export{
  23. baseUrl,
  24. routerMode,
  25. DEBUG,
  26. ROLE,
  27. cancleHTTP
  28. }
    在拦截器中配置

test环境下则运行:

9.

  1. npm run build--test

production环境则运行:

10.

  1. npm run build--prod

好了,这就是配置步骤了。

vue根据不同环境进行编译打包的更多相关文章

  1. vue给不同环境配置不同打包命令

    第1步:安装cross-env 1 npm i --save-dev cross-env 第2步:修改各环境下的参数 在config/目录下添加test.env.js.pre.env.js. 修改pr ...

  2. vue 应用生产环境的 webpack 打包配置优化

    转:https://blog.csdn.net/robin_star_/article/details/83856363 前言:很好的打包优化的帖子,还没来的急去实测验证 1. 去掉 console ...

  3. 二、Electron + Webpack + Vue 搭建开发环境及打包安装

    目录 Webpack + Vue 搭建开发环境及打包安装 ------- 打包渲染进程 Electron + Webpack  搭建开发环境及打包安装 ------- 打包主进程 Electron + ...

  4. 一、Electron + Webpack + Vue 搭建开发环境及打包安装

    目录 Webpack + Vue 搭建开发环境及打包安装 ------- 打包渲染进程 Electron + Webpack  搭建开发环境及打包安装 ------- 打包主进程 Electron + ...

  5. VUE环境搭建及打包上线

    1.vue2.0新手填坑攻略之使用vue-cli搭建vue项目开发环境到项目发布 https://blog.csdn.net/u010020858/article/details/72865101 2 ...

  6. Android应用程序(APK)的编译打包过程

    (9878) (7) 现在很多人想对Android工程的编译和打包进行自动化,比如建立每日构建系统.自动生成发布文件等等.这些都需要我们对Android工程的编译和打包有一个深入的理解,至少要知道它的 ...

  7. Ant自动编译打包&发布 android项目

    Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我们自动编译打包了. ...

  8. 项目androidAnt编译打包Android项目

    时间紧张,先记一笔,后续优化与完善. Ant编译打包Android项目 在Eclipse中对Android项目停止编译和打包如果项目比较大的话会比较慢,所以改为Ant工具来停止编译和打包 Ant环境配 ...

  9. 通过ant脚本编译打包android工程

    通过ant脚本,编译打包android工程 1.Android程序编译.打包.签名.发布的三种方式:  方式一:命令行手动编译打包  方式二:使用ant自动编译打包  方式三:使用eclipse+AD ...

随机推荐

  1. 关于参加AWD攻防比赛心得体会

    今天只是简单写下心得和体会 平时工作很忙 留给学习的时间更加珍少宝贵. 重点说下第二天的攻防比赛吧  . 三波web题 .涉及jsp,php,py. 前期我们打的很猛.第一波jsp的题看到有首页预留后 ...

  2. Linux重要配置文件

    目录 简介 0x01 系统重要文件 0x02 用户重要文件 0x03 重要日志文件 本教程概述 本课时学习Linux系统中重要的配置文件. 用到的工具 SshClient Ubuntu 标签 Linu ...

  3. PMP(第六版)中的控制账户、规划包、工作包

    PMP(第六版)中的控制账户.规划包.工作包 控制账户是一个管理控制点,在该控制点上,把范围.预算和进度加以整合,并与挣值比较,以测量绩效.控制账户拥有2个或以上的工作包,但每个工作包只与一个控制账户 ...

  4. 百万年薪python之路 -- 函数的动态参数练习

    1.继续整理函数相关知识点. 2.写函数,接收n个数字,求这些参数数字的和.(动态传参) def func(*args,**kwargs): num_sum = 0 num_dic = [] num ...

  5. 【Go】高效截取字符串的一些思考

    原文链接:https://blog.thinkeridea.com/201910/go/efficient_string_truncation.html 最近我在 Go Forum 中发现了 [SOL ...

  6. 实战--dango自带的分页(极简)

    注意,我将templates定义在项目的同级目录下: 在settings.py中配置 TEMPLATES = [ { 'BACKEND': 'django.template.backends.djan ...

  7. iOS 应用签名原理&重签名

    在苹果的日常开发中,真机测试与打包等很多流程都会牵扯到各种证书,CertificateSigningRequest,p12等.但是很多相应的开发者并不理解iOS App应用签名的原理和流程.今天着重讲 ...

  8. Java面向对象的三大特征和五大原则

    Java面向对象的三大特征 封装 封装(Encapsulation)是指属性私有化,根据需要提供setter和getter方法来访问属性.即隐藏具体属性和实现细节,仅对外开放接口,控制程序中属性的访问 ...

  9. 暑期集训20190725 胜地不常(paradise)

    [题目描述] 给定两个长度为n的非负整数数组a,b, [输入数据] 第一行一个整数n. 第二行n个整数a1~an. 第三行n个整数b1~bn. [输出数据] 一行一个整数表示答案. [样例输入] 4 ...

  10. AutoCad 二次开发 .net 之相同块的自动编号

    主要步骤: 一.获取一个块的id: 其中oId就是了. 二.通过次oId获取块引用blkRef: 三.通过它获取所有相同的块引用的id集合: 四.通过步骤三的集合得到所有的块引用得到集合listBr: ...