Turborepo 1.1
自 12 月中旬发布 Turborepo v1.0 以来,我们看到了惊人的采用率
- 5.5k+ GitHub 星标
- 每周 7 万+ npm 下载量
- 65+ 开源贡献者
- 在 Vercel、AWS、PayPal、Twilio、Contentful、Miro、Framer、Discord.js、Rocket.chat、Astro.build 的生产环境中使用
- Turborepo 社区 Discord 的 585+ 位成员
我们正在使用 Turborepo v1.1 进一步改进构建性能和缓存,其特点包括
- 自动迁移: 官方的幂等迁移脚本,可帮助您进行升级。
turbo.json
支持: Turborepo 配置现在位于其自己的文件中。- 更快的包管理器检测: Turborepo 现在会遵守根目录
package.json
中的packageManager
键。 - 环境变量依赖: 定义环境变量如何影响全局和特定于任务的缓存。
- 对 Yarn v2+ 的部分支持: 支持带有
nodeLinker: "node-modules"
的 yarn v2+。
立即运行 npm install turbo@latest
进行更新。 运行 turbo
后,您将看到有关如何使用 @turbo/codemod
为 v1.1
运行自动迁移的说明。
自动迁移
Turborepo 现在提供幂等的代码转换和自动迁移脚本(又名“codemods”),以帮助您在功能被弃用或将来将被弃用时升级您的 Turborepo 代码库。
Codemods 是以编程方式在您的代码库上运行的转换。 这可以通过自动将大量更改应用到您的代码,从而节省您的时间,而无需手动浏览和编辑每个文件。
用法
transform
- 转换的名称,请参阅文档中可用的转换。path
- 要转换的文件或目录。--dry
- 执行空运行,不会编辑任何代码。--print
- 打印已更改的输出以进行比较。
有关特定转换的更多信息,请查看新的 Codemods 文档。
turbo.json
支持
Turborepo 配置现在在您的 monorepo 根目录中的 turbo.json
文件中定义。 对于那些希望在其代码编辑器中快速跳转到其 Turborepo 配置的人来说,这比在 package.json
中使用 turbo
键更好。
要从 package.json
中的当前配置自动迁移,请检出一个新分支,导航到您的 monorepo 的根目录并运行以下 codemod
有关此转换的更多信息,请查看文档。
更快的包管理器检测
Turborepo 现在支持最近在 package.json
中建立的 packageManager
字段,以实现更快的包管理器检测。 以前,turbo
会检查特定的文件来推断此信息。 要自动设置此字段,请检出一个新分支,导航到您的 monorepo 的根目录并运行
有关此转换的更多信息,请查看文档。
环境变量依赖
当您将 turbo
与在构建时内联环境变量的工具(例如 Next.js 或 Create React App)一起使用时,请务必告知 turbo
,以避免发送具有错误环境变量的缓存工件。
您现在可以根据环境变量的值和文件的内容来控制 turbo
的缓存指纹(又名哈希)行为
- 在您的
pipeline
定义中,通过以$
为前缀,在dependsOn
中包含环境变量将影响每个任务或每个包任务的缓存指纹。 - 通过以
$
为前缀,在globalDependencies
列表中包含环境变量将影响所有任务的缓存指纹。 - 在
globalDependencies
中包含文件或文件全局模式将影响所有任务的缓存指纹。
注意:在大多数 monorepo 中,您通常不会在共享包中使用环境变量,而主要是在应用程序中使用。 因此,为了获得更高的缓存命中率,您应该仅在应用程序特定的任务(使用/内联环境变量的任务)中包含环境变量。
有关更多信息,请阅读缓存和哈希文档。
部分 Yarn v2/v3 支持
除了 Yarn v1、npm 和 pnpm 包管理器之外,Turborepo 现在还支持 Yarn v2+,并且在 .yarnrc.yml
中设置了 nodeLinker: "node-modules"
。 此键告诉 Yarn v2+ 模拟 Yarn v1 的 node_modules
安装行为。 当前不支持 Yarn v2+ Plug'n'Play(又名“PnP”)。
下一步是什么?
自我们发布以来,Turborepo 一直专注于无缝的增量采用/迁移和加速 CI/CD。 我们致力于这两个价值观,但现在我们还将专注于提高 Turborepo 在本地开发和可观察性方面的日常人体工程学。 我们对下一个篇章感到非常兴奋,并将很快分享更多细节。
我们正在招聘!
Vercel 的 Turborepo 团队正在招聘! 我们特别需要全职高级全栈软件工程师和高级 DevOps/基础设施工程师来帮助我们使 Turborepo 变得更好。