我是nodejs的新手。我有这样的package.json
{
...
"peerDependencies": {
"react": "16.0.0"
},
"dependencies": {
"some-lib-that-use-old-react": "git+ssh://git@bitbucket.org/xx/somelib.git",
"other-lib-that-use-old-react": "git+ssh://git@bitbucket.org/xx/other.git"
},
...
}在运行npm install之后,我得到了这样的项目树
node_modules
|
|__some-lib-that-use-old-react
|__other-lib-that-use-old-react
|__react我使用peerDependencies是因为在some lib和other lib中不需要react
(效果如我所料)
但是react的版本不是16.0.0。它是其他库中的旧版本。
我能用peerDependencies反应16.0.0吗?
我想要一个库,我将使用peerDependencies而不是dependencies。
我已经试过像这样用npm-shrinkwrap.json了
{
"dependencies": {
"react": { "version": "16.0.0", "from": "react@16.0.0" }
}
}但是它不适用于This version of npm is compatible with lockfileVersion@1, but npm-shrinkwrap.json was generated for lockfileVersion@0.
我用npm 5.5.1 & node 8.9.3。安装前不要有package-lock.json。
谢谢大家来帮忙。
更新1 I将操作系统从mac更改为,但它也不起作用。npm cache clean --force也帮不上忙。
更新2 In package.json of react在npm i之后,如下所示
{
"_from": "react@old-version",
"_id": "react@old-version",
...
"_requiredBy": [
"/some-lib-that-use-old-react",
"/other-lib-that-use-old-react"
],
...
"version": "old-version"
}发布于 2018-10-11 10:37:17
来自NPM文件
一个建议是:与常规依赖不同的是,对等依赖需求应该是宽松的。您不应该将对等依赖锁定到特定的修补程序版本。如果一个柴氏插件依赖于柴1.4.1,而另一个依赖于柴1.5.0,那就太烦人了,仅仅因为作者懒惰,并且没有花时间计算出他们兼容的真正的最小版本。
请理解对等依赖关系支持最老的版本,因为作者很懒,并且没有花时间计算出他们兼容的实际的最小版本才对。
见更多信息:https://nodejs.org/en/blog/npm/peer-dependencies/
2020年最新情况.10-16
现在到2020年。
NPM版本7.0.0使peerDependencies比以前更好,并解决我以前的问题。
请通过下面的链接查看更多信息。
https://github.com/npm/rfcs/blob/latest/implemented/0025-install-peer-deps.md/
https://stackoverflow.com/questions/48097750
复制相似问题