[英]npm peer dependency check
$ 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
?
您最有可能使用的是 npm@3(版本 3)。
如文档中所述,在大多数情况下,npm 版本 1 和 2 用于安装peerDependencies
。 Npm 版本 3 更改了此行为,不再安装peerDependencies
,而是在未安装peerDependencies
时发出警告。
npm 版本 1 和 2 将自动安装 peerDependencies,如果它们在依赖关系树中没有显式依赖。 在 npm 的下一个主要版本 (npm@3) 中,情况将不再如此。 您将收到一条警告,指出未安装 peerDependency。
变化背后的原因大多是使用时要避免依赖地狱peerDependencies
或大部分时间peerDependencies
被错误地使用。 npm Github上有许多关于peerDependencies
的问题,比如这个解释了一些问题以及导致解决方案不再安装peerDependencies
。
如果您的应用程序在未安装request
崩溃,则您主要是需要它。 目前,在 npm 环境中, dependencies
是您require()
的包, devDependencies
是您require()
包require()
仅用于开发、测试等。
peerDependencies
最初旨在解决主要是其他框架或库的“插件”包的问题,旨在与另一个“主机”包一起使用,即使它们不直接使用或需要“主机”包。
例如,Grunt 插件旨在与 Grunt 一起使用,但从require('grunt');
. 添加grunt
作为dependencies
会导致新下载的包副本永远不会被使用。 即使某些插件直接依赖于 'host' 包并在dependencies
指定了 'host' 包,这也会导致 'host' 包的多个副本。
peerDependencies
是一种说法,当插入一个“主机”包的版本时,一个包可以工作,所以如果你安装了这个包,你也应该手动安装另一个包。
这就是您当前的行为,您正在安装您的应用程序,将request
列为peerDependencies
,因此您应该安装它以使其工作并删除警告,否则,您需要移动到经典的dependencies
。
看起来我已经找到了一种以1
退出的方法,在执行一般npm install
之后/之前(我认为顺序无关紧要)我需要运行npm install my_module
,它将以1
退出。 这意味着我可以定义一个模块列表,我想确保在我的 CI 脚本中有他们需要的东西(在peerDependencies
中定义),虽然不漂亮但总比没有好。
因此,无论您将在package.json
定义什么样的依赖关系, npm install
都不会中断。 如果package.json
有废话, npm install module_name
会中断。
有一个工具可以让我检查兼容的依赖版本。 检查一下https://www.npmpeer.dev/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.