Javascript nx和Lerna之间的区别是什么?(单一回购协议)
你好,我是monorepos世界的新成员,我现在正在搜索不同的monorepos工具Javascript nx和Lerna之间的区别是什么?(单一回购协议),javascript,monorepo,lerna,nrwl-nx,nrwl,Javascript,Monorepo,Lerna,Nrwl Nx,Nrwl,你好,我是monorepos世界的新成员,我现在正在搜索不同的monorepos工具 我找到了两个有趣的工具Nx(nrwl)和lerna,但我不明白这两个工具之间的真正区别,所以请提供帮助并感谢尽管这两个工具都是处理mono repo的好工具,但它们的用途却大不相同 分歧 Lerna专注于链接来自同一项目的多个包并管理npm发布,就是这样 Nx更侧重于管理多个软件包的开发工作流。这意味着它可以构建包,对于每个包,您可以定义如何运行和构建它们的配置,方式与Webpack类似 Nx还可以一次生成多个
我找到了两个有趣的工具Nx(nrwl)和lerna,但我不明白这两个工具之间的真正区别,所以请提供帮助并感谢尽管这两个工具都是处理mono repo的好工具,但它们的用途却大不相同 分歧
Lerna
专注于链接来自同一项目的多个包并管理npm发布,就是这样
Nx
更侧重于管理多个软件包的开发工作流。这意味着它可以构建包,对于每个包,您可以定义如何运行和构建它们的配置,方式与Webpack类似
Nx
还可以一次生成多个进程。例如:同时运行前端和后端,而不需要打开两个不同的终端。类似于docker compose
他们繁荣的地方
Lerna
更适合包含多个包的开源项目(因为您可以轻松发布包)
Nx
更适合处理具有多个软件包的复杂工作流
如何选择
- 如果您不打算发布软件包,
可能更适合Nx
- 如果您当时确实打算发布,但您没有复杂的工作流程,
无疑是一个不错的选择Lerna
- 如果同时需要(发布和复杂工作流),两者都不太合适,但您可能应该选择
,并手动管理发布。或者,可以使用Nx
并使用Webpack手动配置工作流Lerna
Nx
似乎并不关心与Lerna
兼容,而且它仍然缺乏对轻松发布的支持
关于术语的重要免责声明
- 我在这里使用了“package”这个名称,因为“package”是您可以在internet上发布的内容(例如,在
-节点package管理器中)NPM
使用名称“project”作为所有包的包装文件夹。通常,git存储库是一个包含多个“Lerna包”的“Lerna项目”Lerna
使用名称“project”指定Lerna称之为“packages”,并使用名称“workspace”指定Lerna称之为“project”(即保存所有项目的包装文件夹)Nx