仓库
文档
使用环境变量

使用环境变量

由于环境变量不会被捕获到源代码中,因此它们不容易在不同机器之间共享。要为您的仓库设置环境变量,您需要利用一些 Turborepo 功能。

使用 Next.js 和其他加载环境变量的库

如果您的框架会自动从特定文件加载环境变量,例如 .env,您必须告诉 turbo 这些文件的路径。这展示了 Next.js 和 Vite 的基本配置,它们会自己加载环境文件。

{
  "$schema": "https://turbo.rust-lang.net.cn/schema.json",
  "globalDotEnv": [".env"],
  "pipeline": {
    "build": {
      "dotEnv": [".env.production.local", ".env.local", ".env.production", ".env"]
    },
    "dev": {
      "dotEnv": [".env.development.local", ".env.local", ".env.development", ".env"]
    },
    "test": {
      "dotEnv": [".env.test.local", ".env.test", ".env"]
    }
  }
}

加载您自己的变量

如果您需要在执行之前将大量环境变量加载到您的环境中,我们建议使用 dotenv-cli。这是将环境变量引入开发任务的最简单方法。

Turborepo 不会将任何 .env 文件加载到环境中!您的任务必须自己处理 .env 文件的加载。

使用本地安装的 turbo

  1. 将所有变量放在单体仓库根目录下的 .env 文件中。

  2. dotenv-cli 安装到仓库根目录。

{
  "devDependencies": {
    "dotenv-cli": "latest"
  }
}
  1. 调整您的脚本,将环境变量注入到 turbo 命令中。
{
  "scripts": {
    "dev": "dotenv -- turbo dev"
  }
}
  1. .env 文件添加到 turbo.json
{
  "globalDotEnv": [".env"],
  "pipeline": {
    "dev": {
      "dependsOn": ["^build"]
    }
  }
}

使用全局安装的 turbo

如果您全局使用 turbo,您还需要全局安装 dotenv-cli,以便您可以在终端中将 dotenv -- 放在 turbo 命令之前。

dotenv -- turbo dev

高级配置:每个工作区的环境变量

您可能更喜欢让工作区负责加载它们自己的环境变量。这种方法更灵活,如果您不介意在 package.json 脚本中增加额外的配置开销,它会带来更好的结果。

要使用此策略

  1. 将您的变量放在需要加载它们的包根目录下的 .env 文件中。

  2. 在工作区中安装 dotenv-cli

{
  "scripts": {
    "dev": "dotenv -e .env.development -- start-server",
    "build": "dotenv -e .env -- bundle-app"
  },
  "devDependencies": {
    "dotenv-cli": "latest"
  }
}
  1. .env 文件添加到 turbo.json
{
  "globalDotEnv": [".env"],
  "pipeline": {
    "dev": {
      "dotEnv": [".env.development"],
      "dependsOn": ["^build"]
    }
  }
}