vite+vue3+typescript的env變量使用方法

env環(huán)境變量

vite在import.meta.env 對象上暴露環(huán)境變量。固定的環(huán)境變量有

  • import.meta.env.MODE: string類型,應用運行的模式,通過 vite --model dev 或者 vite build --model prod 指定
  • import.meta.env.BASE_URL: string類型,由base配置項決定
  • import.meta.env.PROD: boolean,應用是否運行在生成環(huán)境
  • import.meta.env.DEV: boolean,應用是否運行在開發(fā)環(huán)境

.env 文件

vite從下列文件加載額外的環(huán)境變量

.env                # 所有情況下都會加載
.env.local          # 所有情況下都會加載,但會被 git 忽略
.env.[mode]         # 只在指定模式下加載
.env.[mode].local   # 只在指定模式下加載,但會被 git 忽略

加載的環(huán)境變量通過import.meta.env暴露給客戶端源碼

.env 文件目錄

通過envDir配置項配置,如果不配置,默認是跟vite.config文件所在同目錄

{
    plugins: [vue() ],
    envDir: './env',
    ...
  };

env前綴

為了防止意外地將一些環(huán)境變量泄露到客戶端,只要以VITE_為前綴的變量才會暴露給經(jīng)過vite處理的代碼,例如

APP=demo
VITE_KEY=123

只有VITE_KEY會被暴露為 import.meta.env.VITE_KEY提供給客戶端源碼,而APP不會。
當然也可以自定義env變量的前綴,使用envPrefix配置項

{
    plugins: [vue() ],
    envDir: './env',
    envPrefix: ['VITE_','DZ_'],
    build:{
      manifest: true
    }
  };

添加配置項后,一下配置內(nèi)容

APP=demo
VITE_KEY=123
DZ_API=http://www.baidu.com

VITE_KEYDZ_API都會通過import.meta.env暴露

vite.config中使用env

根據(jù)不同的mode,生成文件到不同目錄。通過loadEnv加載環(huán)境變量

import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig(({mode})=>{
  const envConfig = loadEnv(mode,'./env')
  const result = {
    plugins: [vue() ],
    envDir: './env',
    envPrefix: ['VITE_','DZ_'],
    build:{
      manifest: true,
      outDir: `./dist/${mode}`
    }
  };
  return result;
})

TypeScript 智能提示

在src目錄下的env.d.ts文件,添加如下內(nèi)容

interface ImportMetaEnv {
  readonly VITE_KEY: string;
  readonly DZ_API: string;
  // 更多環(huán)境變量...
}

interface ImportMeta {
  readonly env: ImportMetaEnv
}

使用

import.meta.env.VITE_KEY
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容