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

如何在SvelteKit与Turborepo中使用根目录全局.env文件?

如何在Turborepo全局共享根目录的.env.local

当然可以实现全局共享,但你之前的globalDependencies配置只是让Turbo监测该文件变化、触发重新构建,并不是用来注入环境变量的,所以没起作用。下面给你两个不用给每个包单独装dotenv-cli的解决方案:

方案1:用Turbo自带的全局环境变量传递

这是最简洁的方式,利用Turbo的globalEnv字段统一传递变量:

  1. 在根目录.env.local中定义变量,前端用的变量必须加VITE_前缀(因为SvelteKit基于Vite),服务端变量无需前缀:
    VITE_API_BASE_URL=https://api.example.com
    SERVER_DB_PASSWORD=xxx
    
  2. 修改turbo.json,添加globalEnv字段,把需要全局传递的变量列进去:
    {
      "$schema": "https://turbo.build/schema.json",
      "globalDependencies": [".env.local"],
      "globalEnv": ["VITE_API_BASE_URL", "SERVER_DB_PASSWORD"],
      "pipeline": {
        // 保留你原有的pipeline配置
      }
    }
    
  3. 在SvelteKit中直接使用:
    • 前端代码:import.meta.env.VITE_API_BASE_URL
    • 服务端代码(如hooks.server.ts):process.env.SERVER_DB_PASSWORD

方案2:根目录统一配置dotenv-cli,子包复用

如果不想依赖Turbo的globalEnv,可以在根目录统一管理dotenv-cli,子包直接调用:

  1. 在根目录安装dotenv-cli:
    pnpm add -D dotenv-cli
    
  2. 根目录package.json中添加全局脚本:
    "scripts": {
      "with-env": "dotenv -e ./.env.local --"
    }
    
  3. 子包(如你的SvelteKit项目)的package.json脚本直接调用根的with-env:
    "scripts": {
      "dev": "pnpm --filter=.. with-env vite dev",
      "build": "pnpm --filter=.. with-env vite build"
    }
    
    这样所有子包都无需单独安装dotenv-cli,直接复用根目录的配置。

注意:修改Turbo配置后,记得重启dev服务才能生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 17:52:13