詳解vue-cli4 配置不同開發(fā)環(huán)境打包命令
前言
為什么會(huì)需要配置多種環(huán)境變量?
在一個(gè)產(chǎn)品的開發(fā)過程中,一般來說都是會(huì)經(jīng)歷這么一個(gè)過程:本地開發(fā) → 測試版部署 → 測試 → 預(yù)上線 → 正式上線。對應(yīng)的每一個(gè)環(huán)節(jié)中的服務(wù)器地址,接口地址...都會(huì)不一樣。那么我們需要怎么去處理這種情況。
一. 如何配置環(huán)境變量
1. 創(chuàng)建文件
在 vue-cli4 的腳手架構(gòu)建的項(xiàng)目根目錄中新建一個(gè) .env.[model] 文件,model 為一個(gè)變量,可以通過這個(gè) model 的變量值來判斷當(dāng)前屬于哪個(gè)環(huán)境。model 可以根據(jù)你的需求來修改, 該文件中寫上對應(yīng)的鍵值對。你需要多少個(gè)環(huán)境,就創(chuàng)建多少個(gè) .env.[model] 在根目錄中,文件如下圖。
# 預(yù)發(fā)環(huán)境 .env.beta # 開發(fā)環(huán)境 .env.development # 生產(chǎn)環(huán)境 .env.production # 測試環(huán)境 .env.test
簡單說明一下,為什么要?jiǎng)?chuàng)建四個(gè)文件
首先我們創(chuàng)建的文件名必須是 .env.xxx,.env.xxx 文件的 xxx 必須是和 package.json 里的 script 對象內(nèi)部的命令一致。
舉個(gè)例子:
我們創(chuàng)建了 .env.test 這個(gè)文件,那么我們配置的打包命令 build:test 的值 "vue-cli-service build --mode test",--mode 后面的 test 必須跟文件 .env.test 一致,這樣我們打包命令才會(huì)找到環(huán)境變量文件里面配置的參數(shù) "build:test": "vue-cli-service build --mode test"
請注意?。。?/p>
只有 NODE_ENV,BASE_URL 和以 VUE_APP_ 開頭的變量將通過 webpack.DefinePlugin 靜態(tài)地嵌入到客戶端側(cè)的代碼中。這是為了避免意外公開機(jī)器上可能具有相同名稱的私鑰。
2. 環(huán)境變量文件說明
現(xiàn)在我們來到配置文件,這個(gè)配置文件的功能是為了判斷當(dāng)前打包環(huán)境是生產(chǎn)還是測試,或者本地,當(dāng)然你也可以有很多的環(huán)境。在配置文件中我們通過 process.env.VUE_APP_BASE_URL 這個(gè)全局字段去判斷環(huán)境, 然后將對應(yīng)的接口地址匹配上。注意一點(diǎn),上面的 NODE_ENV = "production" 不可以省略,vue-cli 4.0 及之后的版本會(huì)根據(jù) NODE_ENV = "production" 來判斷是否生產(chǎn)環(huán)境,如果你改變了這個(gè)就會(huì)被默認(rèn) NODE_ENV = "development",development 和 production 模式下打包出來的包結(jié)構(gòu)會(huì)不同,為了一致性,所以配置文件的第一個(gè)字段應(yīng)該設(shè)置為 NODE_ENV = "production"。
.env.test(測試環(huán)境變量)
NODE_ENV = "test" VUE_APP_BASE_URL = "接口請求測試地址" VUE_APP_API = "接口請求測試地址"
.env.production(正式環(huán)境變量)
NODE_ENV = "production" VUE_APP_BASE_URL = "接口請求正式地址" VUE_APP_API = "接口請求正式地址"
.env.beta(預(yù)發(fā)環(huán)境變量)
NODE_ENV = "beta" VUE_APP_BASE_URL = "接口請求預(yù)發(fā)地址" VUE_APP_API = "接口請求預(yù)發(fā)地址"
.env.development(開發(fā)環(huán)境變量)
NODE_ENV = "development" VUE_APP_BASE_URL = "/api" // vue 跨域代理配置的標(biāo)識 VUE_APP_API = "測試環(huán)境地址"
說明一下開發(fā)環(huán)境變量文件 VUE_APP_BASE_URL 的值指向的是我們在 vue.config.js 配置的跨域代理的字符串標(biāo)識.
module.exports = {
publicPath: './',
devServer: {
proxy: {
'/api': {
target: '接口請求測試地址', // API 服務(wù)器的地址
ws: true, // 代理 websockets
changeOrigin: true, // 虛擬的站點(diǎn)需要更管 origin
pathRewrite: { // 重寫路徑 比如 '/api/aaa/ccc' 重寫為 '/aaa/ccc'
'^/api': ''
}
}
}
}
}3. 配置打包命令
package.json 文件下的腳本:
{
"script": {
"dev": "vue-cli-service serve && webpack-dev-server --open --mode dev",
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"build:dev": "vue-cli-service build --mode development",
"build:prod": "vue-cli-service build --mode production",
"build:beta": "vue-cli-service build --mode beta",
"build:test": "vue-cli-service build --mode test"
}
}上面提到創(chuàng)建的 .env.[model] 文件,文件名中的 model 對應(yīng) package.json 文件中的打包腳本 --model [model]。
例如我現(xiàn)在想打包正式環(huán)境,正式環(huán)境對應(yīng) .env.[model] 就是 .env.prop。
在 package.json 的 script 中添加 "build:prod": "vue-cli-service build --mode production",其中 production 這個(gè)對應(yīng)配置文件名的 mode,這樣 webpack 打包的時(shí)候會(huì)自動(dòng)跟蹤到這個(gè)文件,并去讀取其中的各種配置字段, 我們在項(xiàng)目中任意位置就可以通過 process.env.xx 拿到其中 xx 配置屬性。
現(xiàn)在我們只需要運(yùn)行對應(yīng)的腳本命令就可以打包對應(yīng)環(huán)境的項(xiàng)目代碼。例如:我現(xiàn)在想打包 production 環(huán)境下的項(xiàng)目,在控制臺運(yùn)行 npm run build:prod,就可以執(zhí)行正式環(huán)境打包。運(yùn)行 npm run build:dev,則可以打包測試環(huán)境,該模式也可用于自動(dòng)化部署。
綜上所述,vue-cli4.x版本的打包命令和環(huán)境變量就配置完成了。
到此這篇關(guān)于vue-cli4 配置不同開發(fā)環(huán)境打包命令的文章就介紹到這了,更多相關(guān)vue-cli4 打包命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Vue如何實(shí)現(xiàn)打包資源按時(shí)間戳方式
- vue打包部署到springboot并通過tomcat運(yùn)行的操作方法
- 解決vue3項(xiàng)目打包后部署后某些靜態(tài)資源圖片不加載問題
- vue3項(xiàng)目打包成apk(android)詳細(xì)圖文教程
- 使用electron打包Vue前端項(xiàng)目的詳細(xì)流程
- uniapp使用vue-cli新建項(xiàng)目并打包的步驟
- vue-cli3 打包優(yōu)化之 splitchunks詳解
- vue-cli如何修改打包項(xiàng)目結(jié)構(gòu)及前綴
- vue/cli3版本打包如何去掉soucemap文件
相關(guān)文章
vue3如何解決各場景l(fā)oading過度(避免白屏尷尬!)
在開發(fā)的過程中點(diǎn)擊提交按鈕,或者是一些其它場景總會(huì)遇到loading加載,下面這篇文章主要給大家介紹了關(guān)于vue3如何解決各場景l(fā)oading過度的相關(guān)資料,避免白屏尷尬,需要的朋友可以參考下2023-03-03
antd upload上傳組件如何獲取服務(wù)端返回?cái)?shù)據(jù)
這篇文章主要介紹了antd upload上傳組件如何獲取服務(wù)端返回?cái)?shù)據(jù)問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
Vue如何使用js-audio-recorder插件實(shí)現(xiàn)錄音功能并將文件轉(zhuǎn)成wav上傳
這篇文章主要給大家介紹了關(guān)于Vue如何使用js-audio-recorder插件實(shí)現(xiàn)錄音功能并將文件轉(zhuǎn)成wav上傳的相關(guān)資料,文中通過示例代碼講解了彈窗界面、變量控制、錄音啟動(dòng)與停止、波形可視化、文件上傳及WAV格式獲取的完整流程,需要的朋友可以參考下2025-06-06
elementPlus?的el-select在提示框關(guān)閉時(shí)自動(dòng)彈出的問題解決
這篇文章主要介紹了elementPlus?的el-select在提示框關(guān)閉時(shí)自動(dòng)彈出閉時(shí)自動(dòng)彈出的問題,主要問題就是因?yàn)閒ilterable屬性,根本解決方案是選中的時(shí)候讓他失去焦點(diǎn)?el-select有一個(gè)visible-change事件,下拉框出現(xiàn)/隱藏時(shí)觸發(fā),感興趣的朋友跟隨小編一起看看吧2024-01-01

