最近我开始使用一个专用的npm包作为后端。它们存储在我们的私有包服务器上(我在应用程序组件之间部署的一个npm存储库。
虽然我最喜欢这一切的运作和发生方式,但有一个陷阱。想象一下这样的包:@example/logging
、@example/utilities
、@example/validation
、@example/database
、@example/security
—低级包。而这些底层包中的许多都依赖于@selfcad/logging
包。@example/updates-queue
、@example/subscriptions
、@example/auth-tools
、@example/cloud-functions
和@example/backend-core
包表示高级抽象和组件。每个高级包都依赖于少数或有时全部的低级包。其中一些包在云函数中通过@example/cloud-functions
包引用,尤其是底层包。其他直接在云中使用的函数。此外,还有一个后端组件,其中大多数包都是直接使用的。
因此,真正的头痛开始了,当必须进行更改时,例如在像@example/logging
或@example/validation
这样的低级包中。
将更新或修复传播到广泛引用的较低包的最简单方法是什么?具有嵌套的依赖项。类似:一个包,例如@example/validation
直接引用,间接引用。类似于@example/configuration
使用@example/validation
,@example/database
使用@example/validation
,我更新了@example/validation
的内部。如何在软件包中传播此类更新?
也许您应该看看Yarn Workspaces。这是纱线的一个有用功能,可以使用单回购将依赖包彼此连接起来。此功能还包括自动发现/自动链接。