如何在使用应用程序时确保单个版本的依赖项

时间:2017-01-09 03:18:10

标签: logging npm aurelia package.json

我为此目的使用peerDependencies,但不管它是否足够,或者它是不可能的。

aurelia-logging为例。

我创建了一个库library-a,它使用aurelia-logging进行日志记录。

对于普通依赖项,我只需将其添加为dependencies。 但是,aurelia-logging包含一些全局状态(即存储创建的所有记录器),以便它公开setLevel()函数,该函数可以设置所有记录器的logLevel。

由于这种全局状态,最终应用程序需要使用单个版本的aurelia-logging来完成整个工作。 如果没有,某些模块可能使用aurelia-logging的不同版本(因此是不同的实例)而setLevel()函数无法正常工作。

作为图书馆作者,我将aurelia-logging列为dependencies以及peerDependencies

它能做我想做的事吗?

全球国家一般是一个坏主意,但在这种情况下,似乎没有别的办法。

1 个答案:

答案 0 :(得分:0)

正如我更多地考虑它,解决方案是使用版本锁定模块来存储这些"全局状态"。

免责声明:您应该尽可能避免使用全局状态。

我为此创建了https://github.com/unional/global-store

再次免责声明:只有在您知道自己正在做正确的事情时才使用它。阅读自述文件。 :)