Turborepo 2.2
Turborepo 2.2带来了新的仓库查询命令,以及其他改进,包括:
- 仓库查询 实验性:使用
turbo query前所未有地探索你的仓库 - 改进的缓存安全性:轻松诊断并修复缺失的环境变量依赖项和不正确的缓存配置
- 受影响包的零配置比较:在 GitHub 工作流程中自动定位有更改的包
立即运行 npx @turbo/codemod migrate 进行更新,或使用 npx create-turbo@latest 开始使用。
查询你的仓库 实验性
在 Turborepo 2.2 中,我们引入了 turbo query——一个新命令,允许对 Turborepo 的仓库数据运行 GraphQL 查询。Turborepo 计算大量关于你的仓库的数据,以便以最高效率执行你的任务。这包括你的包依赖图、已更改的包、任务依赖项、任务的日志输出等等。这些数据对于脚本编写、重构、确定在 CI 中运行什么以及发现代码库的其他见解非常有用。
要开始使用,运行 turbo query 以打开 GraphiQL——一个用于编写 GraphQL 查询的本地 IDE,支持交互式 schema 探索、文档和发送查询。
你也可以直接以字符串或文件路径的形式传递查询
示例
获取所有具有 test 任务的受影响包的名称和路径。
获取特定包及其直接依赖项。
查找所有具有超过 10 个直接依赖项的包。
Turborepo 过去曾添加过结构化数据的 API,例如运行摘要、空运行和ls。然而,这些 API 有一些限制。首先,它们围绕单个运行,而不是一般的仓库信息。其次,随着我们添加更多字段,输出很快变得非常大。我们需要一种与运行无关的方式来查询仓库数据,并使返回的数据更具可定制性。
我们感谢 @maschwenk、@rafaeltab 和 @weyert 对此功能的早期反馈。
要了解更多信息,请访问文档,并在 turbo query RFC 上留下对此新实验性命令的反馈。
改进的缓存安全性
缓存任务是 Turborepo 最强大的功能之一,它通过只重新运行已更改的内容来加速构建和其他任务。在 Turborepo 2.2 中,我们发布了一些改进,以帮助配置缓存输入和输出,并在出现不正确情况时发出警告。
平台环境变量
部署应用程序时,你可能已经在生产环境中配置了环境变量。现在,对于受支持的平台,Turborepo 将自动根据你的 turbo.json 配置检查这些环境变量,以确保你已正确考虑它们,并会警告你任何缺失的环境变量。
任何平台都可以通过在构建环境中实现 TURBO_PLATFORM_ENV 环境变量来支持此功能。
Vercel 目前受支持,我们将随着更多平台可用而更新文档。
了解更多关于平台环境变量的信息。
空缓存配置的警告
运行任务时,如果任务配置为缓存空目录,Turborepo 现在会警告你。这可能是一个常见错误,并可能导致意外的构建中断。此功能在 2.2 中默认启用。
了解更多关于配置输出的信息。
eslint-config-turbo 的改进
Turborepo 会自动为常见框架的环境变量键添加前缀通配符。如果你正在使用受支持的框架之一,则无需指定以该框架前缀开头的环境变量。
现在在 Turborepo 2.2 中,eslint-config-turbo 也支持此功能,确保插件的警告准确且可操作。
了解更多关于eslint-config-turbo的信息。
使用 --affected 进行零配置比较
在 Turborepo 2.1 中,我们发布了 --affected 标志,可与 turbo run 和 turbo ls 一起使用,以自动定位已更改的包。在 2.2 中,我们通过在 GitHub 工作流程中运行 --affected 时引入自动比较功能,使其更进一步——使常见用例更加智能。
- 对于响应拉取请求运行的工作流程,比较的基础会自动设置为拉取请求的基础。这确保
turbo在确定受影响的包时会考虑拉取请求中更改的任何文件。 - 对于响应推送运行的工作流程,比较的基础会自动设置为你最新推送之前的提交。
了解更多关于--affected的信息。
社区
自发布 Turborepo 2.1 以来,我们看到了惊人的采用和社区增长
- 2.62 万+ GitHub Star
- 320 万+ 每周 NPM 下载量
- 通过 Vercel 上的远程缓存节省了 477 年的计算时间
Turborepo 是所有贡献者(包括我们的核心团队)共同努力的成果。
查看完整的更新日志。
感谢您持续的支持、反馈和协作,使 Turborepo 成为您的首选构建工具。