因爲目前我在公司已經搭建了Jenkins
來進行一鍵系統發佈,同時存在測試和生產兩套環境。可是目前iview-admin
是不支持的,只好本身進行改造了。html
PS:iview-admin
版本爲2.1.0
前端
iview-admin 2.1.0
比起iview-admin 2.0.0
,移除了config
目錄且將vue-cli
升級到3.0
。vue
因此能夠使用vue-cli 3.0
的環境變量和模式特性來支持多環境配置打包。git
PS:development
、test
和production
是NODE_ENV
的默認環境變量,因此不能使用。github
新增開發環境文件.env.dev
,內容以下:vue-cli
NODE_ENV = 'dev' VUE_APP_ENV = 'dev' VUE_APP_MOCK = true BASE_URL= '/'
新增測試環境文件.env.beta
,內容以下:npm
NODE_ENV = 'production' VUE_APP_ENV = 'test' VUE_APP_MOCK = false BASE_URL= '/test'
新增生產環境文件.env.prod
,內容以下:json
NODE_ENV = 'production' VUE_APP_ENV = 'prod' VUE_APP_MOCK = false BASE_URL= '/prod'
環境變量文件中各個屬性的用途以下:後端
NODE_ENV
使用的是production
的打包配置VUE_APP_ENV
是由於若是要替換src
目錄下文件中的某個參數則要以VUE_APP_
開頭,這個參數爲對應的環境VUE_APP_MOCK
爲是否引入mock.js
文件的標識BASE_URL
爲前端項目訪問時的相對地址修改scripts
的dev
和build
,修改後內容以下:api
"scripts": { "dev": "vue-cli-service serve --open --mode dev", "build:test": "vue-cli-service build --mode beta", "build:prod": "vue-cli-service build --mode prod", "lint": "vue-cli-service lint", "test:unit": "vue-cli-service test:unit", "test:e2e": "vue-cli-service test:e2e" },
修改後的指令
npm run dev
爲開發調試npm run build:test
爲測試環境打包npm run build:prod
爲開發環境打包修改BASE_URL
(此參數控制的是前端項目訪問時的相對地址),改成從環境變量中獲取,內容以下:
const BASE_URL = process.env.BASE_URL
修改baseUrl
,改成多個後端API接口的配置,內容以下:
baseUrl: { dev: 'http://localhost:8081', test: 'http://www.test.com', prod: 'http://www.prod.com' },
修改baseUrl
(對應後端API接口的地址),改成根據環境變量獲取對應的URL
,內容以下:
const env = process.env.VUE_APP_ENV const baseUrl = config.baseUrl[env]
修改mock
包引入判斷,改成從環境變量中獲取,內容以下:
if (process.env.VUE_APP_MOCK) require('@/mock')