How it works
A version has three parts, MAJOR.MINOR.PATCH. A patch release (2.4.1 to 2.4.2) only fixes bugs, a minor release (2.4 to 2.5) adds features without breaking anything, and a major release (2 to 3) may break existing code. Versions below 1.0.0 make no promises at all, and tags such as 3.0.0-beta.1 mark pre-releases.
Package managers build on it. In package.json, ^2.4.1 accepts any 2.x release from 2.4.1 up, and ~2.4.1 accepts only 2.4.x patches. The scheme only works if maintainers follow it, and not all do, which is one more reason to commit a lockfile and read the changelog before a major upgrade.
Related terms
More in Dev workflow and DevOps
Packages