Semantic Versioning
About
Semantic Versioning (SemVer) is a versioning system that help us keep track of what’s going on in projects.
SemVer is a 3-component system in the format:
x stands for a major version
y stands for a minor version
z stands for a patch
Major.Minor.Patch, increment cases:
Major version when you make incompatible API changes
Minor version when you add functionality in a backwards-compatible manner
Patch version when you make backwards-compatible bug fixes
Benefits
keep a semantic historical track of a component
know which version of a component is no longer backwards compatible
avoid dependency hell when using a component in different places
allow a component to be distributed correctly with package managers
Pre-release
With Semantic Versioning, pre-releases can be defined by appending a hyphen and an identifier to a version. For example:
1.0.0 -> 1.0.0-alpha.1
1.0.0 -> 1.0.0-alpha.2
How to use that
There are two ways for requiring a lib via semver number.
Static: eg:
"fancylib": "1.5.4"
. This mean that you'll get fancyLib version 1.5.4 and that will be fixed in the project. npm install / npm update will not change that versionDynamic. You can use this three symbols
^ ~ *
when you specify the semver^
this can be used at the beginning of the semver. this means that you'll get the latest minor and patch updates for the specified major~
this can be used at the beginning of the semver. this means that you'll get the latest patch updates for the specified major.minor*
This is a wildcard, let's see how it works*.0.0 you'll get the latest major, minor , patch
3.*.0 you'll get the latest minor , patch for the major 3 the same as
^
3.9.* you'll get the latest patch for major 3, minor 9, the same as
~
Resources
Last updated
Was this helpful?