我对Angular并不陌生,但是我对编写自己的Angular组件库并不陌生,因此我一直在尝试学习有关如何构建自己的库并使它们可以通过npm
访问的更多信息。到目前为止,我发现有3种工具似乎在它们周围有很多社区/吸引力。
据我所知,LernaJS是一种与框架无关的软件包管理工具,它似乎主要用于管理彼此高度依赖的软件包之间的符号链接,而不必自己管理链接。还具有使用统一语义版本控制策略发布所有软件包的功能。
然后是ng-packagr,我看到它有一个庞大的协作者社区,我发现了一些教程和文章,内容涉及如何使用ng-packagr构建不同场景所需的所有不同类型的模块包( ESM,FESM,AMD,UMD等)。我第一次使用此工具的尝试并不顺利,因为我在将package.json文件复制到dist
文件夹中时遇到了问题,这会改变相对路径并导致我遇到问题。我确定这是我的问题,而不是该工具的问题。
最后,存在本机Angular CLI,允许您使用ng new [workspace-name] --create-application=false
,这将创建一个“空白” Angular工作空间来开始构建库。然后,在该工作空间中,我可以使用ng generate library [name]
创建我的库,然后最终使用ng generate application [name]
创建一个托管在localhost:4200
上的“沙盒”应用程序,可以用来测试组件库。 / p>
以我有限的经验,第三个选项似乎对我来说效果最好。我没有遇到任何问题,无法使用CLI生成库并让“沙盒”应用程序导入这些模块/组件并相应地使用它们。它也是Angular的本机工具,因此我知道它将始终遵循对我来说很有吸引力的Angular约定。
所以我的问题是,仍然有使用LernaJS和/或ng-packagr的好处,还是在Angular建立自己的解决方案之前只是解决该问题的解决方案?