环境变量和模式
Farm 通过 process.env.NODE_ENV 来区分 development 环境和 production 环境。
在不同的环境中,环境变量会被静态替换,因此使用静态常量来表示环境变量,而不是使用动态表达式。
.env 文件
Farm 使用 dotenv 来加载你的额外环境变量,例如 .env 文件。默认情况下, .env 文件从 root 加载,你可以使用 envDir 来自定义。
// .env
FARM_APP_SECRET=secret
Farm_APP_PASSWORD=password
APP_VERSION=1.0.0
Farm 通过dotenv加载 .env 文件,将其加载到 process.env 中,并最终将其注入到define中。
为了确保客户端的 安全,防止当前系统中的环境变量被暴露给客户端, Farm 只会识别以 FARM_、VITE_ 开头的重要环境变量,以便更好地兼容vite及其生态系统。前缀可以通过 envPrefix 前缀配置
Farm 通过dotenv-expand扩展环境变量。对于仅用于开发的环境变量,使用 .env.development 文件,对于仅用于生产的环境变量,使用 .env.production 文件,对于通过 --mode <stage> 传递的自定义模式,从 .env.<stage> 文件加载。
envPrefix
- 默认值:
FARM_、VITE_
通过配置 envPrefix 来自定义环境变量的前缀。以 envPrefix 开头的环境变量将自动注入到define中。例如,在 .env 文件中:
// .env
FARM_CUSTOM_VERSION=1.0.0
APP_VERSION=0.1.0
那么 FARM_CUSTOM_VERSION 将被注入到你的业务代码中,但 APP_VERSION 不会被注入。在你的业务代码中:
export function MyComp() {
const farmCustomVersion = FARM_CUSTOM_VERSION;
return <div>Farm Custom Version: {farmCustomVersion}</div>
}
FARM_CUSTOM_VERSION 将自动被替换为 '1.0.0' 。
envDir
- 默认值:
<root>
加载env文件的目录。默认情况下,Farm从根目录加载 env 文件。
export defineConfig({
envDir: './env'
})
对于上述配置示例,Farm将从 <root>/env 目录加载.env、.env.development等环境变量文件。
