Turborepo 1.4
Turborepo 1.4 带来了
- 自动包含环境变量: 我们将自动推断常用框架的环境变量。无需在
turbo.json
中自行声明它们。 eslint-config-turbo
: 通过新的 ESLint 插件增强反馈。- 新的框架和库示例: 社区要求的新启动器和示例。
立即运行 npm install turbo@latest
进行更新。
自动包含环境变量
为了帮助确保跨环境的正确缓存,Turborepo 现在将在计算使用 Astro、Create React App、Gatsby、Next.js、Nuxt、SvelteKit、Vite、Vue 等构建的应用的缓存键时,自动推断并包含公共环境变量。如果手动声明了框架特定的公共环境变量,您可以安全地从 turbo.json
中删除它们。


请注意,只有当 Turborepo 成功推断出您的应用所构建的框架时,此自动检测和包含才有效。此外,环境变量只会包含在使用该框架的工作区中的任务的缓存键中。换句话说,为 Next.js 应用推断的环境变量将仅包含在检测为 Next.js 应用的工作区的缓存键中。monorepo 中其他工作区中的任务将不受影响。
例如,考虑一个包含三个工作区的 monorepo:一个 Next.js 项目、一个 Create React App 项目和一个 TypeScript 包。每个工作区都有一个 build
脚本,并且这两个应用都依赖于 TypeScript 项目。假设此 Turborepo 具有标准的 turbo.json
管道,该管道按顺序构建它们


从 1.4 开始,当您运行 turbo run build
时,Turborepo 在构建 TypeScript 包时不会考虑任何构建时环境变量。但是,在构建 Next.js 应用时,Turborepo 将推断以 NEXT_PUBLIC_
开头的环境变量可能会更改 .next
文件夹的输出,因此应在计算哈希时包含这些变量。类似地,在计算 Create React App 的 build
脚本的哈希时,将包含所有以 REACT_APP_PUBLIC_
开头的构建时环境变量。
这种按框架改进哈希特异性是朝着最优、安全和正确的缓存迈出的重要一步。
eslint-config-turbo
我们还创建了一个新的 ESLint 配置,以提供进一步的编辑器内辅助,以帮助确保您的 Turborepo 缓存可以在每个环境中正确共享。虽然我们的新哈希算法应涵盖大多数框架的大多数情况,但此 ESLint 配置将为使用其他未以框架为前缀但影响构建输出(即缓存)的构建时内联环境变量的团队,以及使用我们无法自动检测到的内部框架的团队提供编辑器内反馈。
要开始使用,请在您的根目录 eslintrc
文件中扩展 eslint-config-turbo
如果您更喜欢对规则进行更多控制 - 可以通过首先将 eslint-plugin-turbo
插件 添加到插件,然后配置所需的规则来直接安装和配置它
如果您在代码中使用未在 turbo.json
中声明的非框架相关的环境变量,该插件将警告您。
从 1.4.x 开始,我们现在在所有示例以及通过 npx create-turbo
生成的新项目中包含 eslint-config-turbo
。
在 ESLint 文档 中了解有关 ESLint 配置和插件的更多信息。
新的框架和库示例
根据您的反馈和建议,我们创建了新的示例,将 Turborepo 集成到您的工作流程中
其他错误修复和改进
社区
自从 6 月发布 Turborepo v1.3 以来,我们看到了惊人的采用率和社区增长
- 超过 8.65k+ GitHub 星星
- 每周 NPM 下载量 36.5 万次,自 4 月下旬以来增长了 2 倍
- 通过 Vercel 上的远程缓存节省了 10 年的计算时间,每周节省 10 个月
Turborepo 是我们所有贡献者(包括我们的核心团队)共同努力的成果。
此版本由以下贡献者贡献:@B2o5T、@chitchu、@elis、@gsoltis、@harshcut、@jaredpalmer、@kocisov、@nathanhammond、@neolivz、@NuroDev、@oneezy、@samouri、@shayc、@StevenMatchett、@tknickman、@trevorr、@zsoldosp 以及更多!
感谢您一直以来的支持、反馈和协作,使 Turborepo 成为您的首选构建工具。