介绍
Lerna 是 JavaScript/TypeScript 领域最早的 monorepo 工具。它已经存在多年,被数万个项目使用,包括 React 和 Jest。
它解决了 JavaScript/TypeScript monorepo 的两个最大问题:
- Lerna 可以对任意数量的项目运行命令,以最高效的方式、正确的顺序执行,并且可以分布在多台机器上。
- Lerna 管理您的发布流程,从版本管理到发布到 NPM,并提供多种选项以确保可以适应任何工作流。
Nx(开源同名构建系统的公司)已接管 Lerna 的管理。Nx 是由前 Google 员工开发的构建系统,利用了许多内部 Google 工具使用的技术。Lerna v5 是在这种新的管理下的第一个版本,更新了过时的包并开始清理仓库本身。从 v6+ 开始,Lerna 将任务调度工作委托给 Nx 经过实战检验的、行业领先的任务运行器,这意味着 lerna run
可以免费获得缓存和命令分发的好处!
为什么选择 Lerna?
- 超级快速! Lerna 非常快,甚至比大多数类似解决方案都快(查看这个基准测试以了解更多)。怎么做到的?在底层,Lerna v6+ 使用 Nx 运行任务。了解更多关于运行任务的信息。
- 计算缓存 - Lerna 知道您即将运行的任务是否在过去已执行过。不是重新运行,Lerna 将立即恢复文件并重播终端输出。此外,这个缓存可以与您的同事和 CI 共享。使用 Lerna 时,您的整个组织将永远不必重复构建或测试相同的内容。阅读更多 »
- 无配置的分布式任务执行 Lerna 可以在不需任何配置的情况下将任何命令分布到多台机器上,同时保持在单台机器上运行的开发人员体验。换句话说,使用 Lerna 扩展您的 monorepo 就像启用一个布尔标志那样简单。查看启用分布式任务执行(DTE)如何使您的 CI 速度提高 20 倍的示例。阅读更多 »
- 美观的终端输出 Monorepo 可能有数百或数千个项目。在每个命令上打印所有内容会使得很难看出什么失败了以及为什么失败。幸运的是,Lerna 做得更好。
- 强大的图形可视化工具 Lerna 附带了一个强大的交互式可视化工具,简化了对工作空间的理解。阅读更多 »
- 发布到 NPM Lerna 是发布多个包到 npm 的终极工具。无论包是否具有独立版本,Lerna 都能满足您的需求。阅读更多 »
- 易于采用 尽管具有所有这些功能,Lerna 仍然非常易于采用。它几乎不需要配置。想看看如何吗?