Hỏi đáp
What’s the difference between tilde(~) and caret(^) in package.json?
After I upgraded to the latest stable node and npm, I tried npm install moment --save. It saves the entry in the package.json with the caret ^ prefix. Previously, it was a tilde ~ prefix.
- Why are these changes made in
npm? - What is the difference between tilde
~and caret^? - What are the advantages over previous ones?
Answers:
See the NPM docs and semver docs:
-
~version“Approximately equivalent to version”, will automatically update you to all future patch versions that are backwards-compatible, without incrementing the minor version.~1.2.3will use releases from1.2.3to <1.3.0. -
^version“Compatible with version”, will automatically update you to all future minor/patch versions that are backwards-compatible, without incrementing the major version.^1.2.3will use releases from1.2.3to <2.0.0.
See Comments below for exceptions, in particular for pre-one versions, such as ^0.2.3