首页 > 解决方案 > 需要相同 peerDependency 的多个版本

问题描述

当我npm i在当前的 react 项目上运行时,我收到以下关于 react 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.

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

"react": "^16.7.0"

我是节点和 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 个版本的 react 但我担心会破坏导入语句。

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

标签: node.jsreactjsnpm

解决方案


进一步考虑 Danyal 的回答,您可以升级 formsy-react 并删除 react-tap-event-plugin:

  1. 将 formsy-react 更新到最新版本:(撰写本文时为 1.1.5),此软件包的最新版本支持 react ^16。
  2. react-tap-event-plugin支持 react 版本到 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 自己发布它。

推荐阅读