Turborepo 1.3
Turborepo 1.3 带来了改进的缓存和灵活性,其中包括:
- 受限的哈希输入: 使用
inputs
指定软件包文件夹中影响缓存的文件。 - 从 monorepo 根目录运行和缓存脚本: 从 monorepo 根目录运行和缓存
package.json
脚本。 - 新的 CI/CD 配方: 我们添加了将 Turborepo 与流行的 CI 提供商一起使用的配方。
立即运行 npm install turbo@latest
进行更新。
管道 inputs
除了 环境变量、依赖项和管道配置 之外,turbo
在计算每个 package.json
脚本的哈希指纹(turbo
用于索引其缓存并确定是否需要重新执行脚本的键)时,将考虑软件包文件夹中的所有非 gitignored 文件。使用 Turborepo 1.3+,您现在可以在 turbo.json
pipeline
中指定 inputs
的 glob,以控制哪些文件与特定脚本的缓存相关。 这意味着您现在可以在 turbo.json
中表达以下内容:
- 忽略软件包或应用程序文件夹中所有 markdown 文件的更改。
- 如果仅更改了应用程序的测试文件,则无需重新构建该应用程序。
- 仅当软件包或文件夹中的源文件或测试文件已更改时才重新运行测试。
- 等等。
让我们来看一个具体的例子:假设我们有一个 monorepo,其中在 ./apps/docs-site
中有一个用于文档网站的 Next.js 应用程序,一些软件包以及在 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。
要进行此设置,请使用 "//#<script>": {...}
的形式在 turbo.json
中的 pipeline
配置中指定根脚本。//
告诉 turbo
该脚本相对于 monorepo 的根目录,而不是每个工作区包。
关于根脚本和执行范围,有 2 个重要的注意事项:
- 如果您的
pipeline
中已经有"build": {...}
,但希望在运行turbo run build
时包含 monorepo 根package.json
文件中定义的build
脚本,您可以通过在配置中也包含"//#build": {...}
来选择将根目录纳入执行范围。 - 相反,如果只需要
"//#my-script": {...}
,则不需要定义通用的"my-script": {...}
条目。
一个定义根脚本 check-examples
并选择将根目录纳入 test
的示例管道可能如下所示:
注意:我们建议在 pipeline
中声明根任务时始终指定 inputs
,以提高缓存效率。
新的 CI/CD 配方
我们添加了将 Turborepo 和远程缓存与以下工具一起使用的配方:
如果还有其他您希望看到的配方,请通过打开 GitHub 讨论 来告诉我们。
其他 Bug 修复和改进
- 改进了 git 操作和哈希处理
- 在依赖关系图分析中更好地检测循环
- 增加了对 Windows ARM 64 位架构的支持
- 改进了远程缓存错误日志记录
- 将 Storybook 添加到设计系统示例中
社区
自 4 月初发布 Turborepo v1.2 以来,我们看到了令人难以置信的采用率和社区增长
- 8.1k+ GitHub Star
- 275k+ 每周 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 成为您的首选构建工具。