在 Angular 个应用程序之间共享代码

Sharing code between Angular applications

我有一个现有的 Durandal 应用程序,实际上是两个相互纠缠在一起的应用程序。

我想重写 Angular 中的应用程序,并想区分应用程序的共享通用代码。

我估计大约 80% 的代码可以共享。

如果可能的话,我想使用 angular-cli。但我真的在寻找有关如何在 Angular 应用程序之间共享代码的最佳实践。

看看Minko's blog post on creating Angular Libraries。这是因为您希望将 80% 的可重用代码创建为一个或多个可共享的内部库。然后您可以将它们发布到内部 NPM 存储库。

然后您可以简单地使用 angular-cli 创建使用这些库的应用程序。

Minko 在上面链接的博客中谈到了两个要点。这些确保您的库与 Angular 的 AoT 兼容并且它们是 tree-shakable.

更新 20202 年 11 月 2 日

另一种选择是使用 monorepo 模式,您可以将库和应用程序放在同一个存储库中,从而使代码重用更容易。

Monorepo 和 microrepo 各有利弊。这两种模式都需要来自组织的 buy-in 和用于 CICD and/or 依赖管理的工具。

如果您正在考虑 monorepo,请查看 Nrwl Nx 工具。