vue3+vite使用环境变量.env的一些配置说明
vue 2023-03-18 10:43:33

 1、设置.env中的内容信息

注意vue3+vite不是必须使用VITE开头的配置信息

JavaScript Code复制内容到剪贴板
  1. NODE_ENV = "env"    //  
  2. VITE_NODE_ENV = "env"   //VITE开头的给vue3+vite使用    

 

2、在vite.config.js中配置

环境变量通常可以从 process.env 获得。

注意 Vite 默认是不加载 .env 文件的,因为这些文件需要在执行完 Vite 配置后才能确定加载哪一个,举个例子,root 和 envDir 选项会影响加载行为。不过当你的确需要时,你可以使用 Vite 导出的 loadEnv 函数来加载指定的 .env 文件。

JavaScript Code复制内容到剪贴板
  1. import { defineConfig, loadEnv } from 'vite'  
  2.   
  3. export default defineConfig(({ command, mode }) => {  
  4.   // 根据当前工作目录中的 `mode` 加载 .env 文件  
  5.   // 设置第三个参数为 '' 来加载所有环境变量,而不管是否有 `VITE_` 前缀。  
  6.   const env = loadEnv(mode, process.cwd(), '')  
  7.   return {  
  8.     // vite 配置  
  9.     define: {  
  10.       __APP_ENV__: env.APP_ENV,  
  11.     },  
  12.   }  
  13. })  

 

 

3、在 vite 中使用环境变量 import.meta.env

有四种环境变量,如下所示:

1、MODE,用来指明现在所处于的模式,一般通过它进行不同环境的区分,比如 dev、test、pre、prd 等等,默认为:“development”

2、BASE_URL,用来请求静态资源初始的 url

3、PROD,用来判断当前环境是否是正式环境

4、DEV,用来与 PROD 相反的环境

5、SSR,用来判断是否是服务端渲染的环境

 

4、使用环境变量

使用 import.meta.env.VITE_NODE_ENV 获取环境变量

console.log( import.meta.env) //查看相关信息

// 老版本的vue2+webpack的情况

还是使用 process.env.NODE_ENV

console.log( process.env) //查看相关信息

 

5、在package.json中配置模式

上面使用的时候是固定写法 需要切换.env 和 .env.pro 中不同的变量信息
在打包中配置 如下:

使用 --mode pro 进行设置

JavaScript Code复制内容到剪贴板
  1. "scripts": {  
  2.     "serve""vite",    //未指定默认取.env中的配置  
  3.     "dev""vite --mode dev",   // 取 .env.dev文件中的配置  
  4.     "pro""vite --mode pro",   // 取 .env.pro文件中的配置  
  5.     "build""vue-tsc --noEmit && vite build",  //未指定默认取.env中的配置  
  6.     "build:dev""vue-tsc --noEmit && vite build --mode dev",    // build的时候取dev的配置  
  7.     "build:pro""vue-tsc --noEmit && vite build --mode pro",   // build的时候取pro的配置  
  8.     "preview""vite preview"  
  9.   },  

最后, 想要在提交代码时忽略本地.env文件,还要在.gitignore文件中添加.local

C/C++ Code复制内容到剪贴板
  1. node_modules  
  2. dist  
  3. dist-ssr  
  4. *.local  

 

6、Vue3的Env环境变量配置的应用

.env(# 所有环境默认)

C/C++ Code复制内容到剪贴板
  1. # 所有环境默认  
  2.    
  3. # 页面 title 前缀  
  4. VUE_APP_TITLE=某某某  
  5.    
  6. # 网络请求公用地址  
  7. VUE_APP_API= /  

 

.env.development(# 开发环境)

C/C++ Code复制内容到剪贴板
  1. # 开发环境  
  2.    
  3. # 指定构建模式  
  4. VITE_NODE_ENV=development  
  5.    
  6. # 页面 title 前缀  
  7. VUE_APP_TITLE=某某某  
  8.    
  9. # 网络请求公用地址  
  10. VITE_APP_API=/api/  
  11.    
  12. # 首页是否显示登录  
  13. VITE_SHOW_LOGIN='yes'  
  14.    
  15. VITE_SOME_APPENV='1000006'  

 

.env.production(# 生产环境)

C/C++ Code复制内容到剪贴板
  1. # 构建预览页面  
  2.    
  3. # 指定构建模式 production  
  4. VITE_NODE_ENV=test  
  5.    
  6. # 页面 title 前缀  
  7. VUE_APP_TITLE=某某某  
  8.    
  9. # 网络请求公用地址  
  10. VITE_APP_API=/  
  11.    
  12. # 首页是否显示登录  
  13. VITE_SHOW_LOGIN='no'  
  14.    
  15. VITE_SOME_APPENV='1000002'  

 

在页面中需要参与环境判断时则可使用

JavaScript Code复制内容到剪贴板
  1. console.log(import.meta.env)  

 

在vite.config.js中使用,不能用import.meta.env,具体使用如下

JavaScript Code复制内容到剪贴板
  1. export default defineConfig(({ mode, command }) => {  
  2.   const env = loadEnv(mode, process.cwd());  
  3.   const { VITE_APP_ENV, VITE_APP_BASE_PATH } = env;  
  4.   return {...}  
  5. })  

 

 

 

本文来自于:http://www.yoyo88.cn/study/vue/659.html

Powered by yoyo苏ICP备15045725号