基于vue cli 通過(guò)命令行傳參實(shí)現(xiàn)多環(huán)境配置
大多數(shù)項(xiàng)目都有生產(chǎn)環(huán)境和開(kāi)發(fā)環(huán)境,一般情況下應(yīng)該夠了,但是有時(shí)候還需要sit,uat,本地等環(huán)境,這時(shí)候假如要通過(guò)注釋的方式切換環(huán)境就相當(dāng)麻煩了. 如果可以像下面這樣切換環(huán)境就方便了
npm run serve //默認(rèn)本地開(kāi)發(fā)環(huán)境
npm run serve -sit //本地開(kāi)發(fā)中使用sit環(huán)境
npm run serve -uat //本地開(kāi)發(fā)中使用uat環(huán)境
npm run build //默認(rèn)打包后使用生產(chǎn)環(huán)境
npm run build -local //打包后使用本地環(huán)境
npm run build -sit //打包后使用sit環(huán)境
`npm run build -uat //打包后使用uat環(huán)境
如果對(duì)@vue/cli還不熟的話,建議看看這篇文章http://www.fzitv.net/article/138055.htm
我們首先在根目錄下面創(chuàng)建一個(gè)vue.config.js文件,如圖
vue.config.js代碼如下:
const webpack = require('webpack')
const environment = require('./build/environment')
module.exports = {
baseUrl: '/wxperp/',
configureWebpack: {
plugins: [
new webpack.DefinePlugin({
'process.env.STAGE': JSON.stringify(environment.stage),
'process.env.LOCAL_URL': JSON.stringify(environment.localUrl)
})
]
}
}
new webpack.DefinePlugin的作用是允許你創(chuàng)建一個(gè)在編譯時(shí)可以配置的全局常量
然后在根目錄創(chuàng)建一個(gè)build文件夾,里面創(chuàng)建一個(gè)environment.js的文件
environment.js代碼如下:
const os = require('os')
// 獲取命令行變量
const configArgv = JSON.parse(process.env.npm_config_argv)
const original = configArgv.original.slice(1)
const stage = original[1] ? original[1].replace(/-/g, '') : ''
// 本地ip地址
let localUrl
try {
const network = os.networkInterfaces()
localUrl = network[Object.keys(network)[0]][1].address
} catch (e) {
localUrl = 'localhost'
}
localUrl = 'http://' + localUrl + '/'
module.exports = {
stage, localUrl
}
這個(gè)stage就是你輸入的變量,比如你輸入 npm run serve -sit 那么stage的值就為sit
這個(gè)localUrl就是你本地的ip,不過(guò)很多人應(yīng)該用不到,我們公司比較特殊,開(kāi)發(fā)的時(shí)候,接口請(qǐng)求的地址都是請(qǐng)求的自己本地服務(wù)器, 如果不自動(dòng)獲取本地ip,那么每個(gè)同事都得在配置文件中保留一份自己得ip地址,很麻煩,所以就自動(dòng)獲取了.
接下來(lái)再src目錄下面創(chuàng)建一個(gè)config.js,記得在main.js中引用這個(gè)config.js
environment.js代碼如下:
(() => {
const urlMap = {
local: process.env.LOCAL_URL + 'api',
sit: 'http://xxx.xxx.xxx:xxxx/sit/api',
uat: 'http://xxx.xxx.xxx:xxxx/uat/api',
prod: 'http://xxx.xxx.xxx:xxxx/prod/api'
}
//sit,uat,prod
let stage = process.env.STAGE
//development,production
const nodeEnv = process.env.NODE_ENV
//nodeEnv為production并且stage不存在默認(rèn)為生產(chǎn)環(huán)境
if (nodeEnv === 'production' && !stage) {
stage = 'prod'
} else {
//stage不存在默認(rèn)為本地開(kāi)發(fā)環(huán)境
stage = stage || 'local'
}
console.log('ip:' + urlMap[stage])
})()
我們輸入 npm run serve -sit ,頁(yè)面打印如下:
再啰嗦下,process.env.NODE_ENV是@vue/cli提供的,貌似有三個(gè)值(development,production,test),
你運(yùn)行 npm run serve 得到的就是development
你運(yùn)行 npm run build 得到的就是production
你運(yùn)行 npm run test 得到的就是test (我沒(méi)試過(guò))
我默認(rèn)打包是打包生產(chǎn)環(huán)境,當(dāng)然你也可以輸入?yún)?shù)打包其他環(huán)境
總結(jié)
以上所述是小編給大家介紹的基于vue cli 通過(guò)命令行傳參實(shí)現(xiàn)多環(huán)境配置,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- 一文搞明白vue開(kāi)發(fā)者vite多環(huán)境配置
- vue項(xiàng)目多租戶環(huán)境變量的設(shè)置
- vue項(xiàng)目多環(huán)境配置(.env)的實(shí)現(xiàn)
- vue-cli4.0多環(huán)境配置變量與模式詳解
- Vue多環(huán)境代理配置方法思路詳解
- vue.js多頁(yè)面開(kāi)發(fā)環(huán)境搭建過(guò)程
- vue-cli項(xiàng)目配置多環(huán)境的詳細(xì)操作過(guò)程
- 通過(guò)vue-cli來(lái)學(xué)習(xí)修改Webpack多環(huán)境配置和發(fā)布問(wèn)題
- Vue+Vite+Axios項(xiàng)目多環(huán)境以及部署前后端跨域
相關(guān)文章
el-table?動(dòng)態(tài)合并不定項(xiàng)多級(jí)表頭的方法
本文主要介紹了el-table?動(dòng)態(tài)合并不定項(xiàng)多級(jí)表頭的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
Vue transx組件切換動(dòng)畫庫(kù)示例詳解
這篇文章主要為大家介紹了Vue transx組件切換動(dòng)畫庫(kù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
Vue實(shí)現(xiàn)按鈕旋轉(zhuǎn)和移動(dòng)位置的實(shí)例代碼
這篇文章主要介紹了Vue實(shí)現(xiàn)按鈕旋轉(zhuǎn)和移動(dòng)位置的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08
Nuxt 嵌套路由nuxt-child組件用法(父子頁(yè)面組件的傳值)
這篇文章主要介紹了Nuxt 嵌套路由nuxt-child組件用法(父子頁(yè)面組件的傳值),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
Vue.js實(shí)現(xiàn)下載時(shí)暫?;謴?fù)下載
本文主要介紹了Vue.js實(shí)現(xiàn)下載時(shí)暫?;謴?fù)下載,通過(guò)使用XMLHttpRequest對(duì)象來(lái)控制下載過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
Vue3中的script?setup語(yǔ)法糖的使用及說(shuō)明
在這篇博客中,我們將探討?script?setup?的含義、好處以及示例代碼,幫助你更好地理解并在項(xiàng)目中合理運(yùn)用這一特性,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
詳解從vue-loader源碼分析CSS Scoped的實(shí)現(xiàn)
這篇文章主要介紹了詳解從vue-loader源碼分析CSS Scoped的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09

