Quick reference to npm versioning.
---
title: npm version cheatsheet
subtitle: Quick reference to npm versioning.
author: Jon LaBelle
date: May 21, 2021
source: https://jonlabelle.com/snippets/view/markdown/npm-version-cheatsheet
gist: https://gist.github.com/jonlabelle/706b28d50ba75bf81d40782aa3c84b3e
notoc: false
---
## npm uses Semantic Versioning
npm uses [Semantic Versioning](https://semver.org). Given a version number `MAJOR.MINOR.PATCH`, increment the:
1. **MAJOR** version when you make incompatible API changes,
2. **MINOR** version when you add functionality in a backwards compatible manner, and
3. **PATCH** version when you make backwards compatible bug fixes.
Additional labels for pre-release and build metadata are available as extensions to the `MAJOR.MINOR.PATCH` format, e.g. `1.0.0-alpha`.
## Acceptable version ranges
To specify acceptable version ranges up to `1.0.4`, use the following syntax:
- **Patch releases:** `1.0` or `1.0.x` or `~1.0.4`
- **Minor releases:** `1` or `1.x` or `^1.0.4`
- **Major releases:** `*` or `x`
## npm version symbols
| Symbol | Rule | Example |
| -------- | -------------------------------------------------------------- | ----------------------------------------- |
| `^` | accept updates to minor and patch releases only. | `^0.13.0`: `0.13.1`, `0.14.0` |
| `~` | accept updates to patch releases only. | `~0.13.0`: `0.13.1` (not `0.14.0`) |
| `>` | accept updates to any version greater than the one specified. | `>0.13.0`: `0.13.1`, `0.14.1`, `1.1.1` |
| `<` | accept updates to any version less than the one specified. | `<3.0.0`: `2.0.0`, `2.9.0` |
| `>=` | accept any version greater than or equal to the one specified. | `>=3.0.0`: `3.0.0`, `4.1.0` |
| `<=` | accept any version less than or equal to the one specified. | `<=3.0.0`: `3.0.0`, `4.1.0` |
| `=` | accept only the exact specified version. | `=3.0.0`: `3.0.0`, (not `3.0.1`) |
| `-` | accept a range of versions. | `1.0.0 - 1.10.10`: `1.5.0` (not `1.11.0`) |
| `\|\|` | accept a combination of versions. | `<2.1.0 \|\| >2.6.0`: `2.0.1`, `3.1.0` |
| `x.x.x` | accept only the specified version (no symbol). | `=3.0.0`: `3.0.0`, (not `3.0.1`) |
| `latest` | always get latest version available. | - |
## References
- [npm Docs: About semantic versioning](https://docs.npmjs.com/about-semantic-versioning)
- [npm Docs: npm-version](https://docs.npmjs.com/cli/v7/commands/npm-version)
- [nodejs.dev: Semantic Versioning using npm](https://nodejs.dev/learn/semantic-versioning-using-npm)
- [Flavio Copes: Semantic Versioning using npm](https://flaviocopes.com/npm-semantic-versioning/)
## Resources
- [npm semver calculator](https://semver.npmjs.com)