You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Turborepo中同时使用根目录与应用级.env文件

Monorepo 环境变量拆分实现方案

核心思路

让每个应用独立处理环境变量加载逻辑:根目录.env仅存共享变量,各应用目录的专属.env存独有用变量,启动时按「共享→专属」的顺序加载(专属变量可覆盖同名共享变量)。

具体步骤

1. 修改根目录启动脚本

移除根目录package.json中start脚本的全局env-cmd配置,交给各应用自行处理环境变量:

"start": "turbo run start --parallel"

2. 配置应用专属环境变量

在目标应用目录(如/apps/web)下创建专属.env文件,写入该应用独有的环境变量,例如:

# /apps/web/.env
NEXT_PUBLIC_WEB_API_URL=https://web.example.com/api
WEB_FEATURE_FLAG=true

3. 修改应用启动脚本

在每个应用的package.json中,更新start脚本,通过env-cmd同时加载根目录的共享.env和应用自身的专属.env:

示例1:React CRA 应用

"start": "env-cmd -f ../../.env -f .env react-scripts start"

示例2:Next.js 应用

"start": "env-cmd -f ../../.env -f .env next dev"

原理说明

  • 根目录执行yarn start时,Turbo 会并行触发所有应用的start脚本
  • 每个应用的脚本先加载根目录的共享变量,再加载自身专属变量,确保专属变量仅对当前应用生效
  • 若根目录与应用目录存在同名变量,应用目录的变量会覆盖根目录的,满足个性化配置需求

可选优化

如果希望更清晰地区分共享变量,可将根目录.env重命名为.env.shared,然后修改应用脚本路径:

"start": "env-cmd -f ../../.env.shared -f .env <应用启动命令>"

内容的提问来源于stack exchange,提问作者klugjo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 08:47:21