我正在尝试为大型分布式应用程序编写第一组npm库,并且遇到了有关如何管理依赖项的问题。 Npm具有“依赖关系”和“ peerDependencies”的概念。
据我所读,peerDependencies
是您要编写“插件”时所需要的,在该插件中,使用方应用程序已经在其末端安装了依赖项。例如,这可能是为webpack
构建插件。
然后,库在运行时需要常规依赖项。在我的场景中,我试图编写一个库,以从使用中的应用程序中抽象出身份验证和授权。这个新库(我们称其为@ myapp / auth)对@auth0/angular-jwt
库有依赖性,因为它使用它来处理JWT。我希望将此库从消费应用程序中完全删除,从而不强制该消费应用程序手动安装。
话虽如此,听起来我需要将@auth0/angular-jwt
添加到库中的dependencies
,然后将其添加到whitelistedNonPeerDependencies
中以便进行构建。
这使我感到困惑,因为ng-packagr
docs say that we should always use peerDependencies
when possible。如果是这种情况,那么为什么当您安装较大的库(如express
时,您只运行npm install express --save
并得到{strong> ALL 手动安装每个。
将包依赖项包括在您不不希望使用应用程序自行安装的自定义库中的正确方法是什么?