node.js - 需要相同 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 中有更多依赖项,可能还需要最新版本。
解决方案
进一步考虑 Danyal 的回答,您可以升级 formsy-react 并删除 react-tap-event-plugin:
- 将 formsy-react 更新到最新版本:(撰写本文时为 1.1.5),此软件包的最新版本支持 react ^16。
- react-tap-event-plugin支持 react 版本到 16.4 版本。你有几个选择:
- 降级反应:降级到 16.4 将删除所有警告,但会限制您将来升级的能力
- 删除 react-tap-event-plugin:根据文档https://www.npmjs.com/package/react-tap-event-plugin。由于对后来的浏览器进行了修复,该模块实际上已被弃用。检查博客文章以获取信息。
- Fork react-tap-event-plugin:我自己不会这样做,但是您可以分叉插件并使用更新的 react peerDependency 自己发布它。
推荐阅读
- android - Spinner 在自定义对话框中不起作用 - 为什么?
- d3.js - topojson/d3.js:未捕获(承诺中)类型错误:无法读取未定义的属性“类型”
- node.js - 长期承诺是否会导致 NodeJS 应用程序无法通过就绪检查?
- docker - docker 中的 jekyll 站点在本地服务
- xaml - 如何在没有固定高度的扩展器中启用滚动
- javascript - 什么是正则表达式只返回 URL 的最后一部分
- visual-studio - 有效的 Visual Studio 许可证的命令行查询?
- ssis - 如何将来自另一个 URL 的 URL 动态传递给 HTTP 连接管理器
- python - Python从列表中的列表中删除重复条目
- go - golang中的对齐方式