我是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,因为react
和some lib
中不需要other lib
(它的工作正常我预期)
但反应的版本不是16.0.0
。它是其他lib的旧版本。
我可以与peerDependencies
做出反应16.0.0吗?
我想要一个lib的地方,我会使用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 我将操作系统从mac更改为Windows,但它也不起作用。 npm cache clean --force
也没有帮助。
更新2 在npm i
之后的反应的package.json中看起来像这样
{
"_from": "react@old-version",
"_id": "react@old-version",
...
"_requiredBy": [
"/some-lib-that-use-old-react",
"/other-lib-that-use-old-react"
],
...
"version": "old-version"
}
答案 0 :(得分:0)
来自NPM文档
一条建议:对等依赖性要求,不同于 有规律的依赖关系,应该宽容。你不应该锁定你的同伴 依赖关系到特定的补丁程序版本。真的 烦人的是,一个Chai插件是否对等依赖Chai 1.4.1,而另一个 依赖Chai 1.5.0,仅仅是因为作者很懒,并且 没有花时间找出柴的实际最低版本 它们兼容。
请了解对等依赖项支持最旧的版本,因为作者很懒,并且没有花时间确定他们兼容的Chai的实际最低版本。