基于vue cli 通過命令行傳參實現(xiàn)多環(huán)境配置
大多數(shù)項目都有生產(chǎn)環(huán)境和開發(fā)環(huán)境,一般情況下應(yīng)該夠了,但是有時候還需要sit,uat,本地等環(huán)境,這時候假如要通過注釋的方式切換環(huán)境就相當(dāng)麻煩了. 如果可以像下面這樣切換環(huán)境就方便了
npm run serve //默認(rèn)本地開發(fā)環(huán)境
npm run serve -sit //本地開發(fā)中使用sit環(huán)境
npm run serve -uat //本地開發(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)境
如果對@vue/cli還不熟的話,建議看看這篇文章http://www.dbjr.com.cn/article/138055.htm
我們首先在根目錄下面創(chuàng)建一個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)建一個在編譯時可以配置的全局常量
然后在根目錄創(chuàng)建一個build文件夾,里面創(chuàng)建一個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
}
這個stage就是你輸入的變量,比如你輸入 npm run serve -sit 那么stage的值就為sit
這個localUrl就是你本地的ip,不過很多人應(yīng)該用不到,我們公司比較特殊,開發(fā)的時候,接口請求的地址都是請求的自己本地服務(wù)器, 如果不自動獲取本地ip,那么每個同事都得在配置文件中保留一份自己得ip地址,很麻煩,所以就自動獲取了.
接下來再src目錄下面創(chuàng)建一個config.js,記得在main.js中引用這個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)為本地開發(fā)環(huán)境
stage = stage || 'local'
}
console.log('ip:' + urlMap[stage])
})()
我們輸入 npm run serve -sit ,頁面打印如下:
再啰嗦下,process.env.NODE_ENV是@vue/cli提供的,貌似有三個值(development,production,test),
你運(yùn)行 npm run serve 得到的就是development
你運(yùn)行 npm run build 得到的就是production
你運(yùn)行 npm run test 得到的就是test (我沒試過)
我默認(rèn)打包是打包生產(chǎn)環(huán)境,當(dāng)然你也可以輸入?yún)?shù)打包其他環(huán)境
總結(jié)
以上所述是小編給大家介紹的基于vue cli 通過命令行傳參實現(xiàn)多環(huán)境配置,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Element-ui table中過濾條件變更表格內(nèi)容的方法
下面小編就為大家分享一篇Element-ui table中過濾條件變更表格內(nèi)容的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03
watch(監(jiān)視屬性)和computed(計算屬性)的區(qū)別及實現(xiàn)案例
watch和computed是vue實例對象中的兩個重要屬性,watch是監(jiān)視屬性,用來監(jiān)視vue實例對象上屬性和方法的變化,computed被稱為計算屬性,可以將data對象中的屬性進(jìn)行計算得到新的屬性,這篇文章主要介紹了watch(監(jiān)視屬性)和computed(計算屬性)的區(qū)別,需要的朋友可以參考下2023-05-05
使用Vue.js和Element-UI做一個簡單登錄頁面的實例
下面小編就為大家分享一篇使用Vue.js和Element-UI做一個簡單登錄頁面的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02
el-form-item?prop屬性動態(tài)綁定不生效問題及解決
這篇文章主要介紹了el-form-item?prop屬性動態(tài)綁定不生效問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07

