Turborepo 2.4
Turborepo 2.4 包含多项改进,以增强您的仓库体验
- 边界 实验性:Turborepo 中边界功能的首次亮相
- 终端用户界面改进:持久化偏好设置和新功能
- 监听模式缓存 实验性:在监听模式下更快地开发
- 循环依赖推荐:更轻松地在大型仓库中采用 Turborepo
node_modules中的schema.json:来自仓库内部的版本化配置验证- ESLint Flat Config 支持:
eslint-config-turbo和eslint-plugin-turbo更新以支持 ESLint v9
立即运行 npx @turbo/codemod migrate 升级,或使用 npx create-turbo@latest 开始。
边界 实验性
Turborepo 构建在包管理器工作区之上,依赖生态系统约定来确定仓库的任务缓存。然而,这要求仓库中的所有开发者都了解并遵守这些约定。
我们正在引入“边界”功能,这是一个实验性功能,用于捕获仓库中未遵循这些最佳实践的地方。这使得缓存更安全,并确保您的仓库已准备好安全使用未来的 Turborepo 功能。
立即使用它
边界功能的这个早期迭代包括发现两种类型的单体仓库错误
- 导入包目录之外的文件
- 导入未在依赖项中指定的包
边界 RFC
我们期待听到您对边界 RFC的反馈,其中包含对这些内置诊断以及自定义边界的提议。
要了解更多信息,请访问文档。
终端用户界面改进
我们继续迭代终端用户界面,该界面最初发布于Turborepo 2.0。
持久化偏好设置
在以前的 Turborepo 版本中,每次运行 turbo 时都需要将终端用户界面重置为您所需的状态。在 Turborepo 2.4 中,我们将持久化您所做的一些 UI 选择,包括
- 您之前选择的任务将在下次运行
turbo时预先选中。让您的上下箭头键休息一下。 - 任务列表可见性,如下所述
- 任务选择固定,如下所述
总而言之,持久化这些偏好设置在 turbo 调用之间创造了更流畅的体验,将 UI 恢复到上次运行 turbo 时的状态。
新键绑定
我们为终端用户界面添加了更多功能,使其更容易处理您的任务和日志。
- h 切换任务列表:您通常专注于一项任务,因此不需要一直看到任务列表。按 h 键显示和隐藏任务列表。此功能是一个持久化偏好设置,如上所述。
- c 复制日志:用鼠标选择一组日志后,按 c 将日志复制到系统剪贴板。
- j 和 k 选择任务:您现在除了使用 ↑ 和 ↓ 之外,还可以使用 j 和 k 在任务列表中循环。Vim 用户欢呼吧。
- p 固定选定任务:选择一个任务会设置一个“图钉”,这意味着它将继续被选中,即使您的任务状态发生变化。您可以通过按 p 释放图钉(或固定您当前悬停的任务)。此功能是一个持久化偏好设置,如上所述。
- u 和 d 滚动日志:您现在可以按 u 向上滚动日志,按 d 向下滚动日志。
- m 了解更多:按 m 将弹出一个窗口,列出所有可用的键绑定。
监听模式缓存 实验性
监听模式是一个单体仓库感知的监听器,它根据您的任务图重新运行任务。这通过利用一个单一的、全局的、依赖感知的监听器,而不是许多更小、功能较弱的监听脚本,开启了在单体仓库中工作的新方式。
在此版本中,我们添加了缓存作为监听模式中的实验性功能。要激活它,请使用 --experimental-write-cache 标志
要了解有关监听模式的更多信息,请访问文档。
循环依赖推荐
循环依赖是您的包图中的循环,会在 Turborepo 的任务图中产生非确定性循环。然而,如果您的任务图中存在循环,Turborepo 将无法确定哪个任务先于哪个,因为它们都相互依赖。
在您的单体仓库中采用 Turborepo 时,您可能会发现循环依赖,因为 Turborepo 创建的任务图比您以前的任务运行器更复杂、更快。以前,Turborepo 会简单地列出仓库的包图中存在循环的包。现在,Turborepo 将包含需要打破的依赖关系,以消除图中的循环。
比较下面终端输出的前后差异
node_modules 中的 schema.json
schema.json 文件为 JSON 文件在编辑器中提供自动补全和验证。我们有一个可通过网络访问的 turbo.json 的 schema.json 版本,托管在 https://turbo.net.cn/schema.json,但一些开发者更喜欢从 node_modules 获取该文件,以保持与已安装的 turbo 版本同步。
从本版本开始,一旦您运行了包管理器的安装命令,schema.json 就可以在 node_modules 中使用


node_modules 位置
我们建议在您的仓库根目录安装 turbo,因此模式文件的路径应指向仓库根目录的 node_modules。在包配置中,您可能需要使用类似 ../../node_modules/turbo/schema.json 的路径。
访问文档以获取更多信息。
ESLint Flat Config 支持
Turborepo 2.4 在 eslint-config-turbo 和 eslint-plugin-turbo 中引入了对 ESLint v9 的支持,此前 ESLint v8 已于 2024 年 10 月 5 日停止维护。
为了确保平稳过渡,配置和插件仍然向后兼容仍在使用 ESLint v8 的用户。
有关更多信息,请访问文档。
其他更改
致谢和社区
Turborepo 是所有贡献者共同努力的成果,其中包括我们的核心团队:Anthony、Chris、Dimitri、Nicholas 和 Tom。
感谢您一直以来的支持、反馈和协作,使 Turborepo 成为您首选的构建工具。要了解如何参与,请访问社区页面。
我们还要感谢所有为本次 Turborepo 版本做出贡献的人:@aaronccasanova、@AlvaroParker、@ankur-arch、@arosequist、@atimmer、@bgw、@bitttttten、@chaficnajjar、@codexshell、@eps1lon、@gianelli99、@glitched-w0rld、@JasonnnW3000、@jbrocksfellas、@jeremy-code、@jonathandsouza、@Juneezee、@kayumuzzaman、@krlvi、@maciej-ka、@ognevny、@olets、@pkerschbaum、@romanofski、@shivam-pawar、@takaebato、@tevem1207、@thebrubaker、@Tofandel、@trivikr、@yamz8 和 @zsh77。