admin管理员组文章数量:1415100
Case
I'm developing a mon react ponent for 2 our projects which uses 2 different version of react-bootstrap.
First one: "react-bootstrap": "^0.33.1"
Second one: "react-bootstrap": "^1.0.0-beta.16"
In library's packages json I have:
{
"peerDependencies": {
"react": "^16.13.0",
"react-bootstrap": "^0.33.1",
"react-dom": "^16.13.0"
}
}
The ponent works fine with both (used API remains the same between these 2 versions).
The problem
When I'm trying to install that dependency in second project I get next error:
npm ERR! Could not resolve dependency:
npm ERR! peer react-bootstrap@"^0.33.1" from @pany/[email protected]
npm ERR! node_modules/@pany/lib
npm ERR! @pany/lib@"1.1.6" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this mand with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
The question is
How can I specify in peerDependencies
that lib can be used in both, 0.33.1 and 1.0.0 versions? Without forcing npm i
to ignore these errors using --force
flag.
Case
I'm developing a mon react ponent for 2 our projects which uses 2 different version of react-bootstrap.
First one: "react-bootstrap": "^0.33.1"
Second one: "react-bootstrap": "^1.0.0-beta.16"
In library's packages json I have:
{
"peerDependencies": {
"react": "^16.13.0",
"react-bootstrap": "^0.33.1",
"react-dom": "^16.13.0"
}
}
The ponent works fine with both (used API remains the same between these 2 versions).
The problem
When I'm trying to install that dependency in second project I get next error:
npm ERR! Could not resolve dependency:
npm ERR! peer react-bootstrap@"^0.33.1" from @pany/[email protected]
npm ERR! node_modules/@pany/lib
npm ERR! @pany/lib@"1.1.6" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this mand with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
The question is
How can I specify in peerDependencies
that lib can be used in both, 0.33.1 and 1.0.0 versions? Without forcing npm i
to ignore these errors using --force
flag.
1 Answer
Reset to default 4So, it supports OR operator
"react-bootstrap": "^0.33.1 || ^1.0.0-beta.16"
but it doesn't solve the problem 'cause the package is building using old version.
So the solution was in just:
- Write 2 scripts that patch package.json with correct version in peerDeeps and change package name (from
@pany/package
to@pany/package-legacy
) - Update CI/CD pipeline to build both versions of package
Not so clean, but works perfect.
本文标签: javascriptNPM peerDependencies how to specify major version rangeStack Overflow
版权声明:本文标题:javascript - NPM peerDependencies how to specify major version range - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745172078a2646036.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论