需要多个版本的相同 peerDependency

IT技术 node.js reactjs npm
2021-05-14 14:57:08

当我运行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"

我是 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 个版本的 react 但我担心这会破坏 import 语句。

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

2个回答

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

  1. 将 formsy-react 更新到最新版本:(撰写本文时为 1.1.5),此包的最新版本支持 react ^16。
  2. react-tap-event-plugin支持版本高达 16.4 的 react 版本。您在这里有几个选择:
    1. 降级react:降级到 16.4 将删除所有警告,但会限制您将来升级的能力
    2. 删除 react-tap-event-plugin:根据文档https://www.npmjs.com/package/react-tap-event-plugin由于对后来的浏览器进行了修复,该module实际上已被弃用。查看博客文章以获取信息。
    3. Fork react-tap-event-plugin:我自己不会这样做,但是您可以分叉插件并使用更新的 react peerDependency 自己发布它。

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

在您的情况下,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 网站上的包依赖项。