概述
- 对于大型的 Monorepo 项目来说,Nx 绝对算是神器,在包管理和版本控制部分有优势
- 对于大型 Monorepo 项目,Nx 是非常实用的工具,在包管理、版本控制以及构建、测试优化等方面都有一定作用
- 下面我们来对比一下这几种工具
NPM 包流行度与状态分析
- 首先打开浏览器,访问 @microsoft/rush-vs-lerna-vs-nx-vs-turbo
- 我们看到一个横向的 NPM 下载记录。过去一年,下载量最多的是 Nx,其次是 Turbo,然后是 Lerna,最后是 Rush
- 从下载量能看出它们的流行程度,Nx 的使用量最多
- 再看这些项目仓库的状态,仓库数量最多的是 Lerna,其次是 Nx,它们的更新频次都很高,基本在一到两个月内都有提交,且版本都是正式版本,没有出现零点几的版本
- 介绍 NPM 包的目的,一是了解包的流行度,从侧面了解其生态情况;二是了解包的更新频次和维护状态
需求选型及工具关系介绍
(一)Nx 与 Lerna 的关系
- Nx 是由前谷歌员工开发的构建系统,利用了谷歌内部工具。Lerna 和 Nx 背后的公司都是 NRWL,NRWL 接管了 Lerna 的管理、维护和更新工作。
- Nx 利用 Lerna 检测工作区中的包及其依赖关系,Lerna 遵循 Nx 强大的任务运行程序来运行脚本,允许并行运行、版本缓存结果,并将其分布在多台机器上,同时确保尊重包之间的依赖关系。
- 有关 Lerna 和 Nx 版本的兼容信息,可在 Lerna 官网查看
- Nx 的重心在构建功能,也包含开发、测试和构建优化等;而 Lerna 更聚焦于包的版本管理和发布
- 如果不需要使用 Nx 扩展功能,开源项目免费;若使用云特性或云计算资源,则需收费
- Nx 和 Lerna 可以互补使用,既可用 Lerna 管理包的版本和发布,也可用 Nx 加速构建过程、管理项目依赖
(二)Nx 与 Turbo 的关系
- Turbo 是 2021 年 12 月发布的构建工具,借鉴了 Nx 的方法,因此有人会比较 Nx 和 Turbo。
- Turbo 是 Nx 的一个子集,同时使用 Turbo 和 Nx 没有意义。Nx 发布了自己的 SaaS 产品,Turbo 虽也类似,但未分离出来,所以在指南中将 Turbo 与 Nx Cloud 进行联合比较。
- 若不想使用 Nx Cloud,可以构建自己的 API 来缓存项目构建过程中的文件,以提速项目构建。
Nx 与 Turbo 的特性对比
1 ) 渐进式采用
Turbo 和 Nx 的集成只需在项目中添加一个新的配置文件,不会破坏项目结构。
2 ) 工作空间部分
对于复杂的工作空间,Nx 和 Turbo API 都会分析并生成配置文件
Nx 的可视化视图比 Turbo 更具体,有交互式工具查看,更直观
3 ) 检测受影响的项目或包
- 两者都支持本地任务协调,包括任务并行,但 Nx 在可插拔方面支持得更好。
4 ) 本地计算缓存
- 两者都支持,可利用缓存提升项目构建速度。不过在存储文件策略上有差异,Nx 的输出差异更小,Turbo 有自己的输出规则,在处理某些输出时效果不如 Nx
5 ) 远程计算缓存:两者都支持
6 ) 分布式任务执行
- Nx 支持,能在多台机器上运行命令,保留单台机器开发体验
- Turbo 不支持,对大型项目有影响
7 ) 生态方面
- Nx 有专门的 VSCode 插件以及其他编辑器插件,对开发者更友好
- Turbo 没有
8 ) 配置方面
- 过去五年 Nx 不断壮
400



被折叠的 条评论
为什么被折叠?



