What's the difference between tilde(~) and caret(^) in package.json?
caret, node.js, npm, package.json, semantic-versioning
Solution
See the NPM docs and semver docs:
`~version` “Approximately equivalent to version”, will update you to all future patch versions, without incrementing the minor version. `~1.2.3` will use releases from 1.2.3 to <1.3.0.
`^version` “Compatible with version”, will update you to all future minor/patch versions, without incrementing the major version. `^1.2.3` will use releases from 1.2.3 to <2.0.0.
See Comments below for exceptions, in particular for pre-one versions, such as ^0.2.3
Problem
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?