$ npm install
my_module@0.0.1 /Users/antpaw/my_module
├── my_module@0.0.1
└── UNMET PEER DEPENDENCY request@^2.74.0
npm WARN my_module@0.0.1 requires a peer of request@^2.74.0 but none was installed.
我不明白这只是一个警告。如果"请求"这对我的应用来说是一个非常重要的交易。没有安装,我的应用程序将崩溃。
如果对等依赖关系未得到满足,或者npm install
命令会以1
退出,我如何使npm do-i-have-everything-i-need-installed
退出1
?
答案 0 :(得分:3)
您最有可能使用npm @ 3(版本3)。
如文档中所述,在大多数情况下,npm版本1和2用于安装peerDependencies
。 Npm版本3更改了此行为,不再安装peerDependencies
,而是在未安装peerDependencies
时发出警告。
npm版本1和2将自动安装peerDependencies,如果它们未在依赖关系树中显式依赖于更高版本。在下一个主要版本的npm(npm @ 3)中,将不再是这种情况。您将收到一条警告,指出未安装peerDependency。
这些变化背后的原因主要是为了避免在使用peerDependencies
或大部分时间peerDependencies
被错误使用时依赖地狱。关于peerDependencies
npm Github this one解决了一些问题以及导致解决方案不再安装peerDependencies
的问题,Angularjs上存在许多问题。
如果您的应用程序在未安装request
的情况下崩溃,则您通常需要它。目前,在npm环境中,dependencies
是您require()
的包,devDependencies
是您require()
仅用于开发,测试等的包。
peerDependencies
最初设计用于解决其他框架或库主要用于'plugins'的软件包的问题,这些软件包旨在与其他“主机”软件包一起使用,即使它们是不直接使用或要求'主机'包。
例如,Grunt插件旨在与Grunt一起使用,但从不require('grunt');
。将grunt
添加为dependencies
会导致新的下载副本永远不会被使用。即使某些插件与'host'包具有直接依赖关系并在dependencies
中指定'host'包,也会导致'host'包的多个副本。
peerDependencies
是一种说法,当插入“主机”软件包版本时,软件包可以正常运行,因此如果您安装此软件包,您也应安装此其他软件包包手动。
这是您目前的行为,您正在安装自己的应用程序,将request
列为peerDependencies
,因此您应安装它以使其正常工作并删除警告,否则,你需要转向经典的dependencies
。
答案 1 :(得分:3)
看起来我已经找到了一种方法退出1
,之后/之前(我觉得顺序并不重要)做一般npm install
我需要运行npm install my_module
将以1
退出。这意味着我可以定义一个模块列表,我希望确保在我的CI脚本中确切地拥有它们所需的内容(在peerDependencies
中定义),不是很好,但它总比没有好。
因此,npm install
无论您在package.json
中定义哪种依赖性无意义,都不会中断。{1}}。如果您在npm install module_name
中有废话,package.json
将会中断。
答案 2 :(得分:0)
有一个工具可以让我检查兼容的依赖版本。 签出https://www.npmpeer.dev/