一文搞明白vue開發(fā)者vite多環(huán)境配置

在看項(xiàng)目的過程中,發(fā)現(xiàn)有類似服務(wù)端多環(huán)境配置的配置,所以研究了下,在網(wǎng)上有多個(gè)方案,選了一個(gè)當(dāng)前在用的吧,另外一個(gè)沒驗(yàn)證
1、原理
對(duì)于使用Vite構(gòu)建的Vue項(xiàng)目,可以使用Vite提供的環(huán)境變量來實(shí)現(xiàn)多環(huán)境配置。
Vite 使用 dotenv 從 環(huán)境文件目錄 中加載環(huán)境文件,默認(rèn)情況下,環(huán)境文件目錄為項(xiàng)目的根目錄,即把環(huán)境文件放在項(xiàng)目根目錄下。
環(huán)境文件命名如下:
.env # 所有情況下都會(huì)加載 .env.local # 所有情況下都會(huì)加載,但會(huì)被 git 忽略 .env.[mode] # 只在指定模式下加載 .env.[mode].local # 只在指定模式下加載,但會(huì)被 git 忽略
不同環(huán)境的變量可以定義在 .env.[mode] 文件中,如 .env.dev、.env.prod 等,如果 .env 文件和 .env.[mode] 中有相同的 key,后者定義的值會(huì)覆蓋前者。
這里咱們以三個(gè)環(huán)境為例編寫 demo,分別是:
- 開發(fā)環(huán)境,mode 為 dev,文件名為 .env.dev
- 測(cè)試環(huán)境,mode 為 uat,文件名為 .env.uat
- 生產(chǎn)環(huán)境,mode 為 prod,文件名為 .env.prod
2、創(chuàng)建配置文件
使用 .env 文件來設(shè)置特定環(huán)境的變量。Vite 會(huì)自動(dòng)加載 .env 文件,而且支持使用不同的 .env 文件來為不同的環(huán)境提供變量。
在項(xiàng)目根目錄下創(chuàng)建.env.dev、.env.test和.env.prod等環(huán)境變量文件,并在其中定義各個(gè)環(huán)境的變量。例如:
NODE_ENV="development" VITE_BASE_API="http://172.26.1.152:80" VITE_BASE_WS="ws://172.26.1.152:18083"
注意,變量名必須以VITE_開頭,這是Vite默認(rèn)的前綴。
3、使用多環(huán)境配置
package.json中配置啟動(dòng)腳本,使用配置
"scripts": {
"dev": "vite --mode dev",
"test": "vite --mode test",
"prod": "vite --mode prod",
"build": "vue-tsc && vite build",
"build:dev": "vue-tsc --noEmit && vite build --mode dev",
"build:prod": "vue-tsc --noEmit && vite build --mode prod",
"preview": "vite preview"
},4、使用環(huán)境變量
在Vue組件中使用環(huán)境變量:
<template>
<div>
<p>{{ apiURL }}</p>
</div>
</template>
<script>
export default {
data() {
return {
apiURL: import.meta.env.VITE_BASE_API
}
}
}
</script>在Vue組件中可以通過import.meta.env.VITE_API_URL來訪問環(huán)境變量。
5、關(guān)于編輯器提示
可以添加 vite-env.d.ts解決。如果不存在這個(gè)文件,在 src 目錄下創(chuàng)建文件 vite-env.d.ts,我的項(xiàng)目下有,不記得是不是自己手動(dòng)創(chuàng)建了
/// <reference types="vite/client" />
?
interface ImportMetaEnv {
readonly VITE_BASE_API: string;
readonly VITE_BASE_WS: string;
}?6、最后驗(yàn)證下
main.ts 打印下環(huán)境變量

客戶端訪問,打開控制臺(tái)可以看到環(huán)境變量,試著切換下看看生效了嗎

7、process.env和import.meta.env
process.env是Node.js中的全局變量,用于訪問進(jìn)程中的環(huán)境變量。在前端開發(fā)中,我們通常使用Webpack等構(gòu)建工具來打包應(yīng)用程序,因此需要在構(gòu)建過程中設(shè)置環(huán)境變量。在Webpack中,可以使用DefinePlugin插件將環(huán)境變量注入到應(yīng)用程序中,然后在代碼中通過process.env來訪問這些變量。
例如,在Webpack中設(shè)置一個(gè)名為API_URL的環(huán)境變量,可以在代碼中通過process.env.API_URL來訪問它:
// webpack.config.js
module.exports = {
plugins: [
new webpack.DefinePlugin({
'process.env.API_URL': JSON.stringify('https://api.example.com')
})
]
}
// app.js
console.log(process.env.API_URL) // 'https://api.example.com'import.meta.env是在ES模塊中定義的全局變量,用于訪問Vite構(gòu)建的應(yīng)用程序中的環(huán)境變量。在Vite中,可以在.env文件中定義環(huán)境變量,然后在Vue組件和JavaScript模塊中通過import.meta.env來訪問這些變量。
需要注意的是,process.env和import.meta.env的作用域不同,前者作用于整個(gè)Node.js進(jìn)程,后者只作用于當(dāng)前的JavaScript模塊或Vue組件。因此,它們的用法和使用場(chǎng)景也有所不同。
總結(jié)
到此這篇關(guān)于vue開發(fā)者vite多環(huán)境配置的文章就介紹到這了,更多相關(guān)vue vite多環(huán)境配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guā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è)面開發(fā)環(huán)境搭建過程
- vue-cli項(xiàng)目配置多環(huán)境的詳細(xì)操作過程
- 基于vue cli 通過命令行傳參實(shí)現(xiàn)多環(huán)境配置
- 通過vue-cli來學(xué)習(xí)修改Webpack多環(huán)境配置和發(fā)布問題
- Vue+Vite+Axios項(xiàng)目多環(huán)境以及部署前后端跨域
相關(guān)文章
vue項(xiàng)目實(shí)現(xiàn)會(huì)議預(yù)約功能(包含某天的某個(gè)時(shí)間段和某月的某幾天)
這篇文章主要介紹了vue項(xiàng)目實(shí)現(xiàn)會(huì)議預(yù)約功能(包含某天的某個(gè)時(shí)間段和某月的某幾天),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02
Element-Ui組件 NavMenu 導(dǎo)航菜單的具體使用
這篇文章主要介紹了Element-Ui組件 NavMenu 導(dǎo)航菜單的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
vue項(xiàng)目拍照或上傳圖片并實(shí)現(xiàn)轉(zhuǎn)化為base64格式
這篇文章主要介紹了vue項(xiàng)目拍照或上傳圖片并實(shí)現(xiàn)轉(zhuǎn)化為base64格式方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
vue 通過 mqtt 實(shí)現(xiàn)實(shí)時(shí)接收消息的操作方法
?MQTT是一種基于發(fā)布/訂閱模式的輕量級(jí)消息協(xié)議,適用于硬件性能有限的遠(yuǎn)程設(shè)備和網(wǎng)絡(luò)狀況不佳的環(huán)境,這篇文章主要介紹了vue 通過 mqtt 實(shí)現(xiàn)實(shí)時(shí)接收消息,需要的朋友可以參考下2024-12-12
vue3+Typescript實(shí)現(xiàn)路由標(biāo)簽頁(yè)和面包屑功能
在使用 Vue.js 開發(fā)后臺(tái)管理系統(tǒng)時(shí),經(jīng)常會(huì)遇到需要使用路由標(biāo)簽頁(yè)的場(chǎng)景,這篇文章主要介紹了vue3+Typescript實(shí)現(xiàn)路由標(biāo)簽頁(yè)和面包屑,需要的朋友可以參考下2023-05-05
vue中控制mock在開發(fā)環(huán)境使用,在生產(chǎn)環(huán)境禁用方式
這篇文章主要介紹了vue中控制mock在開發(fā)環(huán)境使用,在生產(chǎn)環(huán)境禁用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04

