强制不同的 npm 模块共享相同的依赖项

use*_*893 5 javascript node.js npm

抱歉,我是 NOOB 问题,我是 npm 和前端开发的新手。

我有一个库(A),它需要是一个单例,但有一个 init 来传递启动配置。我还有一个库 B,它具有库 A 作为依赖项。在我的 Web 客户端中,我需要直接引用库 A 以及库 B。我在 Web 客户端中初始化库 A。

根据我的调查,我的 Web 客户端和库 B 正在使用库 A 自己的副本,因此由于库 A 仅作为单例工作,库 B 对库 A 的调用失败,并显示undefined.

library A

library B
 |----library A

web-client
 |----library A
 |----library B
       |----library A
Run Code Online (Sandbox Code Playgroud)

在我的 Web 客户端中,package.json 引用了库 A 和 B。我的问题是有没有办法告诉库 B 使用网络客户端直接引用的库 A?

Est*_*ask 2

NPM 3 及更高版本支持此功能。

只要版本约束与和依赖项相匹配,就会安装和的一份副本library A并由 和 使用。library Bweb-clientlibrary Alibrary Bweb-client

如果版本约束不匹配,library B并且web-client将拥有自己的library A.

library A如果项目依赖项没有同时安装,则可以获取多个副本。

在这种情况下

npm dedupe
Run Code Online (Sandbox Code Playgroud)

或删除node_modules并重新安装依赖项

npm i
Run Code Online (Sandbox Code Playgroud)

会有帮助的。