Compare semver version strings to find greater, equal or lesser. Runs in the browser as well as Node.js/React Native etc. Has no dependencies and is tiny (~630 bytes gzipped).
This library supports the full semver specification, including comparing versions with different number of digits like 1.0.0
, 1.0
, 1
, and pre-release versions like 1.0.0-alpha
. Additionally supports the following variations:
1.0.x
or 1.0.*
.25.0.1364.126
.v
is ignored, e.g. v1.0
is interpreted as 1.0
.1.01.1
is interpreted as 1.1.1
.$ npm install compare-versions
// ES6/TypeScript import compareVersions from 'compare-versions'; // Node var compareVersions = require('compare-versions');
compareVersions('10.1.8', '10.0.4'); // 1 compareVersions('10.0.1', '10.0.1'); // 0 compareVersions('10.1.1', '10.2.2'); // -1
Can also be used for sorting:
var versions = [ '1.5.19', '1.2.3', '1.5.5' ] var sorted = versions.sort(compareVersions); /* [ '1.2.3', '1.5.5', '1.5.19' ] */ var sortDescending = versions.sort(compareVersions).reverse(); /* [ '1.5.19' '1.5.5', '1.2.3', ] */
The normal compare function doesn't return a self-explanatory value (using 1
, 0
and -1
). This version returns the boolean which fulfills the specified operator.
compareVersions.compare('10.1.8', '10.0.4', '>'); // return true compareVersions.compare('10.0.1', '10.0.1', '='); // return true compareVersions.compare('10.1.1', '10.2.2', '<'); // return true compareVersions.compare('10.1.1', '10.2.2', '<='); // return true compareVersions.compare('10.1.1', '10.2.2', '>='); // return false
If included directly in the browser, compareVersions()
is available on the global window:
<script src="compare-versions/index.js"></script> <script> window.compareVersions('10.0.0', '10.1.0'); </script>