--- tags: - Software_Engineering --- # Semantic versioning ``` 3.4.1 === major.minor.patch ``` * Major * New feature which may potentially cause breaking changes to applications dependent on the previous major version. * Minor * New features that do not break the existing API * Patch * Bug fixes for the current minor version ## Glob patterns for versioning ### Caret Interested in any version so long as the major version remains at $n$. E.g if we are at `^4.2.1` and we upgrade, we are ok with `4.5.3` or `4.8.2`. We are not bothered about the minor or patch version. This is equivalent to `4.x` ### Tilde Interested in any patch version within set major and minor parameters. For example `~1.8.3` means you don't mind any patch version so long as it is a patch for `1.8`. This is equivalent to `1.8.x`. ### No tilde or caret Use the *exact* version specified