首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NPM peerDependencies如何指定主版本范围

NPM peerDependencies如何指定主版本范围
EN

Stack Overflow用户
提问于 2021-02-12 18:09:10
回答 1查看 266关注 0票数 2

案例

我正在为我们的两个项目开发一个通用的react组件,它使用了两个不同版本的react-bootstrap。

代码语言:javascript
复制
First one: "react-bootstrap": "^0.33.1"
Second one: "react-bootstrap": "^1.0.0-beta.16"

在库的包json中,我有:

代码语言:javascript
复制
{
  "peerDependencies": {
    "react": "^16.13.0",
    "react-bootstrap": "^0.33.1",
    "react-dom": "^16.13.0"
  }
}

该组件在这两个版本上都工作得很好(使用的API在这两个版本之间保持不变)。

问题所在

当我试图在第二个项目中安装这个依赖项时,我得到了下一个错误:

代码语言:javascript
复制
npm ERR! Could not resolve dependency:
npm ERR! peer react-bootstrap@"^0.33.1" from @company/lib@1.1.6
npm ERR! node_modules/@company/lib
npm ERR!   @company/lib@"1.1.6" from the root project
npm ERR! 
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.

问题是

如何在peerDependencies中指定lib可以在0.33.1和1.0.0两个版本中使用?而不使用--force标志强制npm i忽略这些错误。

EN

回答 1

Stack Overflow用户

发布于 2021-02-15 17:48:19

因此,它支持OR运算符"react-bootstrap": "^0.33.1 || ^1.0.0-beta.16"

但这并不能解决问题,因为这个包是使用旧版本构建的。

因此,解决方案就是:

  1. 编写2个脚本,在package.json中使用正确的版本修补peerDeeps,并更改包名称(从@company/package更改为package CI/CD管道,以构建两个版本的package

不是很干净,但工作起来很完美。

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

https://stackoverflow.com/questions/66169856

复制
相关文章

相似问题

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