VUE 如何分環境打包(開發/測試/生產)配置


前言

之前小玲一直處於更新,迭代項目的狀態,開發環境、測試環境、生產環境都是前輩配置好的,自己幾乎沒有配置過,這次做幾個新項目時,面臨着上線,需要分環境打包配置,於是在網上遨游了一會會,摸索着按照網上的方法,試驗了一把,三種環境已經能夠用命令分開打包。於是便決定寫下這一篇可能已經過時但還能提供些微幫助的筆記

一般情況下我們執行命令 npm run build就能把Vue項目打包,但是這樣操作每次只能打包到一個環境,不同環境需要配置不同的地址,還得手動更改接口的地址,這給部署帶來了極大的不方便。

所以為了解決這個(偷)問題(懶),我們只需要按照以下幾步配置一下即可:

1.確定目錄結構:

 

 

 

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

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

 

3.在config目錄內新建test.env.js文件(要保證和prod.env.js一致):

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

 

4.在build目錄下修改webpack.prod.conf.js:

1 // const env = require('../config/prod.env') 注釋這一行
2 //添加下面幾行
3 if(process.env.NODE_ENV === 'testing') { 4     var env = require('../config/test.env') 5     console.log("test") 6 }else{ 7     var env = require('../config/prod.env') 8     console.log("prod") 9 }

 

5.確認安裝cross-env,執行命令:

cnpm install cross-env --save-dev  或者   npm install cross-env --save-dev 

 

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

 1 {  2   "name": "teach-manger",  3   "version": "1.0.0",  4   "description": "teach and student  manager",  5   "author": "xiaoling",  6   "private": true,  7   "scripts": {  8     "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",  9     "start": "npm run dev", 10     "lint": "eslint --ext .js,.vue src", 11     "build": "node build/build.js", 12     "build:report": "npm_config_report=true node build/build.js", 13     "build--test": "cross-env NODE_ENV=testing env_config=test node build/build.js", 14     "build--prod": "cross-env NODE_ENV=production env_config=prod node build/build.js"
15   },

 

7.在放置公共文件的目錄下或者axios.js文件中(總之就是設置axios.defaults.baseURL之前)新建env.js,對環境進行判斷並切換,內容如下:

 1 /*
 2  * 配置編譯環境和線上環境之間的切換  3  * baseUrl: 域名地址  4  * routerMode: 路由模式  5  * DEBUG: debug狀態  6  * cancleHTTP: 取消請求頭設置  7  */
 8 const baseUrl = '';  9 const routerMode = 'history'; 10 const DEBUG = false; 11 const cancleHTTP = []; 12 if (process.env.NODE_ENV == 'development') { 13     baseUrl = "http://192.168.xxx.xxx"; 14     DEBUG = true; 15 }else if(process.env.NODE_ENV == 'testing'){ 16     baseUrl = "http://test.xxx.com"; 17     DEBUG = false; 18 }else if(process.env.NODE_ENV == 'production'){ 19     baseUrl = "http://www.xxx.com"; 20     DEBUG = false; 21 } 22 export{ 23  baseUrl, 24  routerMode, 25  DEBUG, 26  cancleHTTP 27 }

 

8.在axios請求接口的文件內引入env.js

 1 import axios from 'axios'
 2 import {Message} from 'element-ui'
 3 import store from '../store'
 4 import {getToken, removeToken} from '@/utils/auth'
 5 import {loginUrl} from '@/config/common'
 6 import {baseUrl} from '@/config/env'
 7 
 8 // 創建axios實例
 9 const service = axios.create({ 10     // baseURL: process.env.BASE_API, // api的base_url
11     baseURL: baseUrl, // api的base_url
12     timeout: 50000, // 請求超時時間
13  headers: { 14         'X-Requested-With': 'XMLHttpRequest', 15         'Content-Type': 'application/json'
16  } 17 })

 

9.找到build/build.js 文件,注釋或者刪除這行代碼,這步非常重要,否則打包完會一直走生產環境

 

 

 

10.配置成功,運行命令如下

測試環境打包,運行:cnpm run build--test 生產環境打包,運行:cnpm run build--prod

 

 

好了,可以開啟偷懶模式了~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM