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 应用程序的工作区的缓存键中。单体仓库中其他工作区的任务不会受到影响。
例如,考虑一个具有三个工作区的单体仓库:一个 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 开始,我们现在将 eslint-config-turbo
包含在我们的所有示例以及通过 npx create-turbo
生成的新项目中。
在 ESLint 文档中了解有关 ESLint 配置和插件的更多信息。
新的框架和库示例
根据您的反馈和建议,我们创建了新的示例,以将 Turborepo 集成到您的工作流程中
其他错误修复和改进
社区
自从六月份发布 Turborepo v1.3 以来,我们看到了令人难以置信的采用和社区增长
- 超过 8.65k 个 GitHub 星标
- 每周 NPM 下载量 36.5 万次,自 4 月下旬以来翻了一番
- 通过 Vercel 上的远程缓存节省了 10 年的计算时间,每周节省 10 个月的时间
Turborepo 是我们所有贡献者(包括我们的核心团队)共同努力的结果。
此版本由以下人员的贡献促成:@B2o5T、@chitchu、@elis、@gsoltis、@harshcut、@jaredpalmer、@kocisov、@nathanhammond、@neolivz、@NuroDev、@oneezy、@samouri、@shayc、@StevenMatchett、@tknickman、@trevorr、@zsoldosp 等!
感谢您一直以来的支持、反馈和协作,使 Turborepo 成为您首选的构建工具。