monorepo下子包如何读取根目录的env环境变量
2024-11-13
| 2024-11-14
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
😀
Monorepo开发模式下,子包使用vite作为开发服务器和构建工具,如何在子包中通过import.meta.env读取到monorepo根目录下定义的环境变量,及其原理
 

📝 主旨内容

问题背景及解决方式

子包如何读取到根目录下的环境变量
由于vite默认只会读取当前包下的env文件,不会自动往根层级目录查询。因此可以使用dotenv来读取配置。代码如下:
在vite.config.js中添加如下代码:

原理

vite加载环境变量的机制是什么
其实上面的代码中 dotenv.config的目录,是为了把指定的env文件中定义的环境变量加载到process.env中; 那为什么这个变量能被import.meta.env读取到呢?
其实这里就需要了解vite如何加载环境变量的。
我们查看源码:
config.ts
vitejs
看到关键函数:loadEnv
可以看到,在一开始,loadEnv就把process.env中的key进行循环遍历,检查如果包含了指定了前缀,就把这个变量加载到了env环境变量里面,也就是最终的import.meta.env中;

🤗 总结归纳

vite会自动在启动以后装载process.env中的以特定前缀开头(默认是VITE_)的环境变量。而dotenv只要把根目录中的env文件加载到process.env中。就会被vite自动装载;因此代码里就可以用import.meta.env拿到根目录中定义的环境变量;

📎 参考文章

 
💡
欢迎您在底部评论区留言,一起交流~
 
  • monorepo
  • vite
  • Solidity学习笔记-记录cryptozombies学习使用Cloudflare作为域名解析
    Loading...