Nx-VS-Lerna
目录

【前言】
nx和lerna都是优秀的monorepos工具,
本文来对比一下两者的不同,
对比之前可以先看下面两篇文章,
了解nx和lerna的基本使用,
【任务执行】
nx和lerna都可以执行任务,
其实lerna的任务执行就是使用的nx,
单任务执行
# nx
nx run is-odd:build
# lerna
lerna run build --scope=is-odd
多任务执行
# nx
nx run-many --target=build
# lerna
lerna run build
【本地缓存】
lerna默认没有本地缓存能力,
nx默认提供本地缓存能力,
nx开启本地缓存
只需要给项目添加一个nx.json即可
{
"tasksRunnerOptions": {
"default": {
"runner": "nx/tasks-runners/default",
"options": {
"cacheableOperations": ["build", "test"]
}
}
}
}
lerna开启本地缓存
1.如上给项目添加一个nx.json
2.或者使用命令行添加
lerna add-caching
【分布式缓存】
分布式缓存是nx-cloud提供的能力,
简单的说就是一人构建,团队缓存,

nx开启分布式缓存
使用下面的命令会将本地的accessToken和nx-cloud账户绑定,
详细使用方式可以看这篇文章: https://blog.insistime.com/nx
nx connect-to-nx-cloud
lerna开启分布式缓存
由于lerna基于nx,所以lerna开启分布式缓存和nx一样
nx connect-to-nx-cloud
执行上面命令后会将nx.json中的runner修改为nx-cloud,
并生成accessToken,如下

然后就可以访问下图中的url和nx-cloud绑定了

【查看依赖】
lerna没有这个功能,
可以直接使用nx的能力,
nx查看包依赖关系
nx graph
【版本管理】
任务执行,本地缓存,分布式缓存基本都是nx的能力,
而lerna主要的能力是版本管理和发布,
nx没有版本管理能力,
lerna进行版本管理
lerna version
效果如下

强大之处在于
1.可以管理多个包的版本
2.包括多个包之间依赖的版本
例如a包依赖b包,如果b包版本更改,会同步修改a包版本
【发布npm】
同上nx没有publish能力,
lerna有publish能力,
使用lerna发布包
lerna publish
效果如下

lerna的publish能力强大之处在于可以同时发布多个包到npm,
对于管理很多已发布的npm包的monorepos来说很好用。
【nx vs lerna】
这里简单总结下两者的不同,

其实lerna底层是nx,使用lerna配合nx是最佳方案,
# lerna使用nx开启本地缓存
lerna add-caching
# lerna使用nx开启分布式缓存
nx connect-to-nx-cloud
# lerna使用nx查看依赖
nx graph 相关推荐
mantine-ui快速上手
【前言】 2023年,前端开发的ui框架应该用哪个呢, 一些基本的诉求: 1.支持pc和移动端 2.支持黑夜&白天主题切换 3.组件丰富 4.支持react 4是技术栈选择,非通用 按以上要求在github上快速搜索下react相关ui库, 从start数,issues数,最后commit时间等维度
前端Monorepos项目使用npm-workspaces
【前言】 之前一直使用 lerna 来管理前端 monorepos 项目, 今天升级 lerna 后发现不支持 bootstrap 命令了, 替换为了 npm 的 workspaces 相关命令。 【lerna bootstrap】 lerna 的相关使用可以看这篇文章, 一文学会用Lerna管理多
初始化前端Monorepos项目
【前言】 本文记录初始化一个前端Monorepos项目的过程 【LICENSE】 如果是开源项目, 需要添加LICENSE, 一般推荐使用MIT LICENSE, 模板如下, 其中copyright那一行, 可以替换为自己的信息。 【git】 git的一些基础设置 设置git账号信息 配置gitig
小巧的JS测试框架:AVA
【前言】 常见的JS测试框架有Jest,Mocha等, 今天介绍一个小巧的JS测试框架:ava, https://github.com/avajs/ava
强大的构建系统:NX
【前言】 nx是一个强大的构建系统, 这么说可能比较模糊, 本文实践一个项目,带大家了解nx, 感兴趣的也可以自己探索: https://nx.dev/ nx一些典型的应用场景: 1.基于package的monorepo管理 2.完整的前端项目管理 3.react,angular等项目管理 4.no