I'm having basically the same problem as this Op npm peerDependency version conflict but nobody answered him.
My project (I'll call my-api) depends on a private library (let's call it package A
) made by me, and this package A has another private library as a peerDependency (let's call it package B
). Everything works fine only when my project installs the EXACT version of package B listed in package A peerDependencies
. This is weird since package A lists his dependency like this:
{
"name: "package-a",
"peerDependencies": {"package-b": "^0.0.8"}
}
and the dependency I'm installing in the project is "package-b": "^0.0.9"
shouldn't ^0.0.9 satisfy ^0.0.8?
Here is the error message:
While resolving: my-api
npm ERR! Found: @a/package-b@0.0.9
npm ERR! node_modules/@a/package-b
npm ERR! @a/package-b@"^0.0.9" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer @a/package-b@"^0.0.8" from @a/package-a@4.0.0
npm ERR! node_modules/@a/package-a
npm ERR! @a/package-a@"^4.0.0" from the root project
npm error messages are so confusing to me!
I guess I could try using 0.x.x instead of ^0.0.8 but I still think it should work the way it is.
Edit: Just tried setting package-a dependency to: "package-b: 0.x.x" and I still get the same error
Turns out my issue was because NPM doesn't follow the same rules when the major version of a package is 0.
So basically to NPM 0.0.9
is completly different than ^0.0.8
, but 1.0.9
is a valid patch version to ^1.0.8
.
To avoid this problem just start the packages at major version 1