npm为较新的版本依赖安装peerDependencies

时间:2018-01-04 14:48:59

标签: node.js reactjs npm npm-install

我是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,因为reactsome 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"
}

1 个答案:

答案 0 :(得分:0)

来自NPM文档

  

一条建议:对等依赖性要求,不同于   有规律的依赖关系,应该宽容。你不应该锁定你的同伴   依赖关系到特定的补丁程序版本。真的   烦人的是,一个Chai插件是否对等依赖Chai 1.4.1,而另一个   依赖Chai 1.5.0,仅仅是因为作者很懒,并且   没有花时间找出柴的实际最低版本   它们兼容。

请了解对等依赖项支持最旧的版本,因为作者很懒,并且没有花时间确定他们兼容的Chai的实际最低版本。

查看更多:https://nodejs.org/en/blog/npm/peer-dependencies/