需要相同peerDependency的多个版本

Sha*_*arg 6 node.js npm reactjs

当我npm i在我当前的反应项目上运行时,我收到有关反应peerDependency的以下警告:

npm WARN react-tap-event-plugin@3.0.3 requires a peer of react@^16.0.0-0 < 16.4.0 but none is installed. You must install peer dependencies yourself.
npm WARN react-paginate@4.4.4 requires a peer of react@^15.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN formsy-react@0.19.5 requires a peer of react@^0.14.0 || ^15.0.0 but none is installed. You must install peer dependencies yourself.
Run Code Online (Sandbox Code Playgroud)

在我的package.json中,我使用的是最新版本的react:

"react": "^16.7.0"
Run Code Online (Sandbox Code Playgroud)

我是node和npm的新手.我想知道安装npm peerDependencies的好习惯是什么:

1.)如果已在package.json中指定了更新版本,则可以忽略较低版本的警告.

2.)根据 https://lexi-lambda.github.io/blog/2016/08/24/understanding-the-npm-dependency-model/https://github.com/npm/npm/issues/ 6565

npm提供依赖隔离,peerDepencies需要手动安装,所以我应该安装所有3个版本的反应,但我担心会破坏import语句.

3.)如果以上两者都不是,我应该在package.json中使用哪个版本. PS我的package.json中有很多依赖项,也可能需要最新版本.

Chr*_*ter 6

进一步考虑Danyal的答案,你可以升级formy-react并删除react-tap-event-plugin:

  1. 更新formy-对最新版本的反应 :(编写本文时为1.1.5),此软件包的最新版本支持react ^ 16.
  2. react-tap-event-plugin支持反应版本至版本16.4.你有几个选择:
    1. 降级反应:降级至16.4将删除所有警告,但将限制您将来升级的能力
    2. 删除react-tap-event-plugin:根据文档https://www.npmjs.com/package/react-tap-event-plugin.由于对以后的浏览器进行了修复,实际上不推荐使用此模块.查看博客文章了解相关信息.
    3. fork react-tap-event-plugin:我自己不会这样做,但你可以分叉插件并使用更新的react peerDependency自行发布.

  • 选项2.4)忽略警告,16.4可能已经足够接近以至于暂时不引起任何问题 (2认同)

Dan*_*ran 5

对等依赖项意味着包适用于与依赖项的特定版本一起使用,如果超过指定的版本,则无法按预期工作。

在您的情况下,react-tap-event-plugin@3.0.3需要低于 16.4.0react-paginate@4.4.4的 React 版本,需要任何版本的 React 15,对于formsy-react@0.19.5.

您需要从 React 16.7.0 降级,但如果您使用 16.7.0 功能,这可能会破坏您的应用程序,或者您可以删除包并使用另一个包或从头开始编写包的逻辑。

提示:在实际考虑为您的项目使用包之前,请务必阅读 npm 网站上的包依赖项。