Turborepo 1.3
Turborepo 1.3 版本带来了改进的缓存和灵活性,其中包括
- 受限哈希输入: 使用
inputs
指定包文件夹中影响缓存的文件。 - 从 monorepo 根目录运行和缓存脚本: 从 monorepo 的根目录运行和缓存
package.json
脚本。 - 新的 CI/CD 配方: 我们添加了将 Turborepo 与流行的 CI 提供商一起使用的配方。
立即运行 npm install turbo@latest
进行更新。
Pipeline inputs
除了环境变量、依赖项和 pipeline 配置, turbo
在计算每个 package.json
脚本的哈希指纹(turbo
用于索引其缓存并确定脚本是否需要重新执行的键)时,还会考虑包文件夹中的所有非 git 忽略文件。使用 Turborepo 1.3+,您现在可以在 turbo.json
的 pipeline
中指定 inputs
的 glob 模式,以控制哪些文件与特定脚本的缓存相关。 这意味着您现在可以在 turbo.json
中表达以下内容
- 忽略对包或应用程序文件夹中所有 markdown 文件的更改。
- 如果仅更改了应用程序的测试文件,则无需重新构建应用程序。
- 只有在包或文件夹中的源文件或测试文件已更改时,才重新运行测试。
- 以及更多。
让我们通过一个具体的示例来说明:假设我们有一个 monorepo,其中包含一个用于文档网站的 Next.js 应用程序,位于 ./apps/docs-site
,一些包,以及位于 monorepo 根目录的 ./docs
文件夹中的一些 markdown 文件。
假设 Next.js docs-site
渲染来自 ./docs
文件夹的 markdown 文件。我们现在可以在应用程序的 package.json
中设置 build
脚本,以在 turbo.json
中使用 inputs
,从而更好地指定哪些文件是相关的(以及哪些文件应该影响缓存),如下所示
注意:与 outputs
一样,inputs
是相对于相关的 package.json
定义的,但它们可以在给定文件夹之外(例如 ../../docs/**
)。
从 monorepo 根目录运行和缓存脚本
从 1.3 版本开始,turbo
现在可以从 monorepo 根目录的 package.json
文件运行和缓存脚本,这将极大地帮助迁移到 Turborepo。
要进行设置,请在 turbo.json
的 pipeline
配置中使用 "//#<script>": {...}
的形式指定根脚本。//
告诉 turbo
该脚本相对于 monorepo 的根目录,而不是每个工作区包。
关于根脚本和执行范围,有 2 个重要的注意事项
- 如果您已经在
pipeline
中有"build": {...}
,但希望在运行turbo run build
时包含在 monorepo 的根package.json
文件中定义的build
脚本,您可以通过在配置中也包含"//#build": {...}
来选择将根目录纳入执行范围。 - 相反,如果您只需要
"//#my-script": {...}
,则无需定义通用的"my-script": {...}
条目。
一个定义根脚本 check-examples
并选择将根目录纳入 test
的示例 pipeline 可能如下所示
注意:我们建议在 pipeline
中声明根任务时始终指定 inputs
,以提高缓存效率。
新的 CI/CD 配方
我们添加了将 Turborepo 和远程缓存与以下工具一起使用的配方
如果您希望在此处看到其他配方,请通过打开 GitHub Discussion 告知我们。
其他错误修复和改进
- 改进了 git 操作和哈希
- 改进了依赖关系图分析中的循环检测
- 增加了对 Windows ARM 64 位架构的支持
- 改进了远程缓存错误日志记录
- 向 Design System 示例添加了 Storybook
社区
自从4 月初发布 Turborepo v1.2 以来,我们看到了惊人的采用率和社区增长
- 8.1k+ GitHub 星星
- 每周 27.5 万+ NPM 下载量(增长约 2 倍)
- Turborepo 社区 Discord 拥有 1,200+ 名成员
- 通过 Vercel 上的远程缓存节省了 5.8 年的计算时间(增长约 5 倍),现在每周节省超过 7 个月
Turborepo 是包括我们的核心团队在内的 136 多位贡献者共同努力的成果。
此版本由以下人员的贡献提供:@gsoltis、@nathanhammond、@tknickman、@jaredpalmer、@zvictor、@ObliviousHarmony、@O4epegb、@rafaeltab、@mcmontseny、@bertspaan、@Jastor11 和 @enBonnet
感谢您一直以来的支持、反馈以及与我们的协作,使 Turborepo 成为您的首选构建工具。