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.3
will use releases from1.2.3
to <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.3
will use releases from1.2.3
to <2.0.0
.
See Comments below for exceptions, in particular for pre-one versions, such as ^0.2.3