首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为更新版本安装peerDependencies

为更新版本安装peerDependencies
EN

Stack Overflow用户
提问于 2018-01-04 14:48:59
回答 1查看 2.2K关注 0票数 2

我是nodejs的新手。我有这样的package.json

代码语言:javascript
复制
{
  ...
  "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之后,我得到了这样的项目树

代码语言:javascript
复制
node_modules
|
|__some-lib-that-use-old-react
|__other-lib-that-use-old-react
|__react

我使用peerDependencies是因为在some libother lib中不需要react

(效果如我所料)

但是react的版本不是16.0.0。它是其他库中的旧版本。

我能用peerDependencies反应16.0.0吗?

我想要一个库,我将使用peerDependencies而不是dependencies

我已经试过像这样用npm-shrinkwrap.json

代码语言:javascript
复制
{
  "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之后,如下所示

代码语言:javascript
复制
{
  "_from": "react@old-version",
  "_id": "react@old-version",
  ...
  "_requiredBy": [
    "/some-lib-that-use-old-react",
    "/other-lib-that-use-old-react"
  ],
  ...
  "version": "old-version"
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48097750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档