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 集成到您的工作流中
其他错误修复和改进
社区
自 6月发布 Turborepo v1.3 以来,我们看到了惊人的采用和社区增长
- 8.65k+ GitHub Star
- 每周 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 成为您的首选构建工具。