nx 和 Lerna 的区别? (单体)
the difference between nx and Lerna ? (monorepos)
你好,我是 monorepos 世界的新手,我现在正在搜索不同的 monorepos 工具
我发现了两个有趣的工具 Nx(nrwl) 和 lerna 但我不明白这两个工具之间的真正区别所以任何帮助和感谢
虽然两者都是使用单声道存储库的好工具,但它们的用途却大不相同。
差异
Lerna
专注于链接同一项目的多个包并管理 npm 发布,仅此而已。
Nx
更侧重于管理多个包的开发工作流程。这意味着它可以搭建包,对于每个包,您可以定义如何 运行 和构建它们的配置,类似于 Webpack。
Nx
也可以一次生成多个进程。例如:运行 前端和后端同时运行,而不需要打开两个不同的终端。类似于 docker-compose.
他们茁壮成长的地方
Lerna
更适合具有多个包的开源项目(因为您可以轻松发布包)。
Nx
更适合处理包含多个包的复杂工作流。
如何选择
- 如果您不打算发布您的包,
Nx
可能更合适。
- 如果您当时确实打算发布,但没有复杂的工作流程,
Lerna
绝对是您的不二之选。
- 如果您同时想要两者(发布 和 复杂的工作流程),两者似乎都不太好,但您可能应该选择
Nx
,并手动管理发布。或者,也许,使用 Lerna
并使用 Webpack 手动配置工作流。
有人可能想知道您是否可以同时选择两者,但我认为它们不能很好地协同工作。在我写这篇文章的时候,Nx
似乎并不关心与 Lerna
的兼容性,它 Nx
仍然缺乏对轻松发布的支持。
关于术语的重要免责声明
- 我在这里使用名称“package”是因为“package”是您可以在 Internet 上发布的内容(例如,在
NPM
- 节点 Package 管理器中).
Lerna
使用名称“项目”作为所有包的包装文件夹。通常,一个 git 存储库是一个包含多个“Lerna 包”的“Lerna 项目”。
Nx
使用名称“project”来指定 Lerna 所谓的“packages”,并使用名称“workspace”来指定 Lerna 所谓的“project”(即包含所有项目)。
你好,我是 monorepos 世界的新手,我现在正在搜索不同的 monorepos 工具 我发现了两个有趣的工具 Nx(nrwl) 和 lerna 但我不明白这两个工具之间的真正区别所以任何帮助和感谢
虽然两者都是使用单声道存储库的好工具,但它们的用途却大不相同。
差异
Lerna
专注于链接同一项目的多个包并管理 npm 发布,仅此而已。
Nx
更侧重于管理多个包的开发工作流程。这意味着它可以搭建包,对于每个包,您可以定义如何 运行 和构建它们的配置,类似于 Webpack。
Nx
也可以一次生成多个进程。例如:运行 前端和后端同时运行,而不需要打开两个不同的终端。类似于 docker-compose.
他们茁壮成长的地方
Lerna
更适合具有多个包的开源项目(因为您可以轻松发布包)。
Nx
更适合处理包含多个包的复杂工作流。
如何选择
- 如果您不打算发布您的包,
Nx
可能更合适。 - 如果您当时确实打算发布,但没有复杂的工作流程,
Lerna
绝对是您的不二之选。 - 如果您同时想要两者(发布 和 复杂的工作流程),两者似乎都不太好,但您可能应该选择
Nx
,并手动管理发布。或者,也许,使用Lerna
并使用 Webpack 手动配置工作流。
有人可能想知道您是否可以同时选择两者,但我认为它们不能很好地协同工作。在我写这篇文章的时候,Nx
似乎并不关心与 Lerna
的兼容性,它 Nx
仍然缺乏对轻松发布的支持。
关于术语的重要免责声明
- 我在这里使用名称“package”是因为“package”是您可以在 Internet 上发布的内容(例如,在
NPM
- 节点 Package 管理器中). Lerna
使用名称“项目”作为所有包的包装文件夹。通常,一个 git 存储库是一个包含多个“Lerna 包”的“Lerna 项目”。Nx
使用名称“project”来指定 Lerna 所谓的“packages”,并使用名称“workspace”来指定 Lerna 所谓的“project”(即包含所有项目)。