When you run npm install --save somepackage
, it usually adds something like this into package.json:
"dependencies": { "somepackage": "^2.1.0" }
Because the version is prepended with a caret(^), this means that if you later run npm install
, it might install version 2.3.0 instead. This can be undesirable for fairly obvious reasons. npm shrinkwrap
is useful, but doesn't really solve the problem.
So, I have several questions:
When you (or another user) run npm install , npm will download dependencies and devDependencies that are listed in package. json that meet the semantic version requirements listed for each.
Use npm list [package-name] to know the specific latest version of an installed package. Use npm install [package-name]@[version-number] to install an older version of a package. Prefix a version number with a caret (^) or a tilde (~) to specify to install the latest minor or patch version, respectively.
You need to add --save to the command in both install and uninstall cases. This way, when uninstalling with --save, the package's line will be erased from package. json as well as from node_modules. And when installing with --save, the package's line will be added to the package.
npm install will generate a new package-lock. json if it does not exist or it will update the dependency tree if it does not match the packages specified in the package. json . npm ci will install packages based on package-lock.
To specify by default a exact version, you can change your npm config with save-exact
:
npm config set save-exact true
You can also specify the prepend version with a tilde with save-prefix
.
And, no you can't force user to update to a minor or a patch version, NPM uses semver and it's the recommend way of publishing packages.
You can change the default behaviour by using the --save-exact
option.
// npm npm install --save --save-exact react // yarn yarn add --exact react
I created a blog post about this if anyone is looking for this in the future.
https://www.dalejefferson.com/blog/how-to-save-exact-npm-package-versions/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With