使用环境变量
由于环境变量不会被捕获到源代码中,因此它们不容易在不同机器之间共享。要为您的仓库设置环境变量,您需要利用一些 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
-
将所有变量放在单体仓库根目录下的
.env
文件中。 -
将
dotenv-cli
安装到仓库根目录。
{
"devDependencies": {
"dotenv-cli": "latest"
}
}
- 调整您的脚本,将环境变量注入到
turbo
命令中。
{
"scripts": {
"dev": "dotenv -- turbo dev"
}
}
- 将
.env
文件添加到turbo.json
{
"globalDotEnv": [".env"],
"pipeline": {
"dev": {
"dependsOn": ["^build"]
}
}
}
使用全局安装的 turbo
如果您全局使用 turbo
,您还需要全局安装 dotenv-cli
,以便您可以在终端中将 dotenv --
放在 turbo
命令之前。
dotenv -- turbo dev
高级配置:每个工作区的环境变量
您可能更喜欢让工作区负责加载它们自己的环境变量。这种方法更灵活,如果您不介意在 package.json
脚本中增加额外的配置开销,它会带来更好的结果。
要使用此策略
-
将您的变量放在需要加载它们的包根目录下的
.env
文件中。 -
在工作区中安装
dotenv-cli
。
{
"scripts": {
"dev": "dotenv -e .env.development -- start-server",
"build": "dotenv -e .env -- bundle-app"
},
"devDependencies": {
"dotenv-cli": "latest"
}
}
- 将
.env
文件添加到turbo.json
{
"globalDotEnv": [".env"],
"pipeline": {
"dev": {
"dotEnv": [".env.development"],
"dependsOn": ["^build"]
}
}
}