In my React Native project, I have a specific version of a library, specifically [email protected]
, that I need to use in the project. When I run npm i [email protected]
, everything works fine, but if I re-build the project with npm i
, even though package.json
has [email protected]
, in package-lock.json
, it gets resolved to [email protected]
.
What I Want To Know:
a) Why would the actual version get resolved to 1.2.1 instead of 1.1.1?
b) Is there a way to enforce that npm i
will install 1.1.1 instead of 1.2.1?
CodePudding user response:
That is because when you npm install a specific package, say npm i [email protected], it gets resolved with a caret before it in Package.json, so in your package.json it will be written like this
"permission": "^1.1.1"
Which means “Compatible with version”, will update you to all future minor/patch versions, without incrementing the major version. ^2.3.4 will use releases from 2.3.4 to <3.0.0.
If you want to keep the specific package only during installs, then remove the caret before the version. or use "--save --save-exact" flag during npm install