如何确保消费应用程序中的单一版本依赖
How to ensure single version of dependency in consuming application
我正在为此目的使用 peerDependencies
,但不知道是否足够,或者根本不可能。
以aurelia-logging
为例。
我创建了一个库 library-a
,它使用 aurelia-logging
进行一些日志记录。
对于正常的依赖项,我将其添加为 dependencies
。
但是,aurelia-logging
包含一些全局状态(即存储所有创建的记录器),因此它公开了一个 setLevel()
函数,可以设置所有记录器的日志级别。
由于这种全局状态,最终应用程序需要使用单一版本的 aurelia-logging
才能使整个工作正常进行。
否则,某些模块可能会使用不同版本的 aurelia-logging
并且 setLevel()
函数无法正常工作。
作为图书馆作者,我将 aurelia-logging
列为 dependencies
以及 peerDependencies
。
它会做我想做的事吗?
全局状态一般是个坏主意,但在这种情况下,似乎没有其他出路。
我想多了,解决方案是有一个版本锁定模块来存储这些"global states"。
免责声明:您应该尽可能避免使用全局状态。
我为此创建了 https://github.com/unional/global-store。
再次免责声明:只有在您知道自己在做正确的事情时才使用它。阅读自述文件。 :)
我正在为此目的使用 peerDependencies
,但不知道是否足够,或者根本不可能。
以aurelia-logging
为例。
我创建了一个库 library-a
,它使用 aurelia-logging
进行一些日志记录。
对于正常的依赖项,我将其添加为 dependencies
。
但是,aurelia-logging
包含一些全局状态(即存储所有创建的记录器),因此它公开了一个 setLevel()
函数,可以设置所有记录器的日志级别。
由于这种全局状态,最终应用程序需要使用单一版本的 aurelia-logging
才能使整个工作正常进行。
否则,某些模块可能会使用不同版本的 aurelia-logging
并且 setLevel()
函数无法正常工作。
作为图书馆作者,我将 aurelia-logging
列为 dependencies
以及 peerDependencies
。
它会做我想做的事吗?
全局状态一般是个坏主意,但在这种情况下,似乎没有其他出路。
我想多了,解决方案是有一个版本锁定模块来存储这些"global states"。
免责声明:您应该尽可能避免使用全局状态。
我为此创建了 https://github.com/unional/global-store。
再次免责声明:只有在您知道自己在做正确的事情时才使用它。阅读自述文件。 :)