Turborepo 1.1
自从 12 月中旬发布 Turborepo v1.0 以来,我们看到了令人难以置信的采用率
- 5.5k+ GitHub 星星
- 每周 70k+ npm 下载量
- 65+ OSS 贡献者
- 在 Vercel、AWS、PayPal、Twilio、Contentful、Miro、Framer、Discord.js、Rocket.chat、Astro.build 的生产环境中使用
- Turborepo Community 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 现在提供幂等代码转换和自动迁移脚本(又名“codemod”),以帮助在功能被弃用或将来会被弃用时升级您的 Turborepo 代码库。
Codemod 是以编程方式在您的代码库上运行的转换。这通过自动将大量更改应用于您的代码来节省您的时间,而无需手动浏览和编辑每个文件。
用法
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
中包含文件或文件 glob 将影响所有任务的缓存指纹。
注意:在大多数 monorepo 中,您通常不会在共享包中使用环境变量,而主要是在应用程序中使用。因此,为了获得更高的缓存命中率,您应该只在应用程序特定的任务中包含使用/内联的环境变量。
有关更多信息,请阅读缓存和哈希文档。
部分 Yarn v2/v3 支持
除了 Yarn v1、npm 和 pnpm 包管理器之外,Turborepo 现在还支持带有 nodeLinker: "node-modules"
在 .yarnrc.yml
中设置 的 Yarn v2+。此键告诉 Yarn v2+ 模仿 Yarn v1 的 node_modules
安装行为。当前不支持 Yarn v2+ Plug'n'Play(又名“PnP”)。
下一步是什么?
自从我们发布以来,Turborepo 一直专注于无缝增量采用/迁移和加速 CI/CD。我们致力于这两个价值,但现在我们还将专注于改善 Turborepo 的日常人体工程学,以用于本地开发和可观察性。我们对下一个篇章感到非常兴奋,并将很快分享更多细节。
我们正在招聘!
Vercel 的 Turborepo 团队正在招聘!我们正在专门寻找全职高级全栈软件工程师和高级 DevOps/基础设施工程师,以帮助我们使 Turborepo 变得更好。