version-range
Check version ranges like >=N
and X || Y || Z
with support for Node.js, Web Browsers, Deno, and TypeScript.
Usage
Range comparison of versions for the most common use cases. Fast with broad ecosystem support.
import satisfies from 'version-range'
console.log(satisfies('1.0', '>=1.0')) // true
console.log(satisfies('1.0', '1')) // true
console.log(satisfies('1.0', '1 || 2')) // true
console.log(satisfies('1.1.0', '^1.1')) // true
console.log(satisfies('1.1.0', '~1.1')) // true
console.log(satisfies('1.0.0', '5 || <=2')) // true
console.log(satisfies('1', '<=2')) // true
console.log(satisfies('1.0', '<=2')) // true
console.log(satisfies('1.0.0', '<=2')) // true
console.log(satisfies('2', '>1')) // true
console.log(satisfies('2', '>=1')) // true
console.log(satisfies('1', '>=1')) // true
console.log(satisfies('1.0', '>=1')) // true
console.log(satisfies('1.0.0', '>=1')) // true
console.log(satisfies('1', '>=1.0.0')) // true
console.log(satisfies('1.0', '>=1.0.0')) // true
console.log(satisfies('1.0.0', '>=1.0.0')) // true
console.log(satisfies('1', '^1')) // true
console.log(satisfies('1', '~1')) // false, not all 1.x versions (1.1, 1.2, etc) match 1.0.x
console.log(satisfies('1', '^1.1')) // false, not all 1.x versions (1.0) match >=1.1<2
console.log(satisfies('1', '~1.1')) // false, not all 1.x versions (1.0) match 1.1.x
console.log(satisfies('1.0.0', '^1')) // true
console.log(satisfies('1.0.0', '~1')) // true
The above results are expected, but not what the semver
package returns. The semver package has two different behaviours based on whether the version is coerced or not, alternating between expected and unexpected results. This package differs to match our actual expectations, as you can see above.
Doesn't do special handling for -releaseTag
and 0.x
versions.
Related
This package comprises this suite of related packages:
And if you are specifically interested in Node.js and ECMAScript versions:
Install
npm
- Install:
npm install --save version-range
- Import:
import pkg from ('version-range')
- Require:
const pkg = require('version-range').default
Deno
import pkg from 'https://unpkg.com/version-range@^4.15.0/edition-deno/index.ts'
Skypack
<script type="module">
import pkg from '//cdn.skypack.dev/version-range@^4.15.0'
</script>
unpkg
<script type="module">
import pkg from '//unpkg.com/version-range@^4.15.0'
</script>
jspm
<script type="module">
import pkg from '//dev.jspm.io/version-range@4.15.0'
</script>
Editions
This package is published with the following editions:
version-range/source/index.ts
is TypeScript source code with Import for modulesversion-range/edition-browsers/index.js
is TypeScript compiled against ES2024 for web browsers with Import for modulesversion-range
aliasesversion-range/edition-es5/index.js
version-range/edition-es5/index.js
is TypeScript compiled against ES5 for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 22 || 24 with Require for modulesversion-range/edition-es2024-esm/index.js
is TypeScript compiled against ES2024 for Node.js 12 || 14 || 16 || 18 || 20 || 22 || 24 with Import for modulesversion-range/edition-types/index.d.ts
is TypeScript compiled Types with Import for modulesversion-range/edition-deno/index.ts
is TypeScript source code made to be compatible with Deno
History
Discover the release history by heading on over to the HISTORY.md
file.
Backers
Code
Discover how to contribute via the CONTRIBUTING.md
file.
Authors
- Benjamin Lupton — Accelerating collaborative wisdom.
Maintainers
- Benjamin Lupton — Accelerating collaborative wisdom.
Contributors
Finances
Sponsors
- Andrew Nesbitt — Working on mapping the world of open source software @ecosyste-ms and empowering developers with @octobox
- Divinci ™ — A more comfortable AI conversation experience, with friends! 🤖🖤
- Mr. Henry
- Poonacha Medappa
- Roboflow
- Square
Donors
- Andrew Nesbitt
- Ángel González
- Arjun Aditya
- Armen Mkrtchian
- Balsa
- Canonical
- Chad
- Codecov
- Divinci ™
- dr.dimitru
- Elliott Ditman
- entroniq
- Frontend Masters
- GitHub
- Hunter Beast
- Jean-Luc Geering
- Lee Driscoll
- Michael Duane Mooring
- Michael Harry Scepaniak
- Mohammed Shah
- Mr. Henry
- Pleo
- Poonacha Medappa
- Robert de Forest
- Rob Morris
- Roboflow
- Scott Kempson
- Sentry
- ServieJS
- Skunk Team
- Square
- Syntax
- WriterJohnBuck
License
Unless stated otherwise all works are:
- Copyright © Benjamin Lupton
and licensed under: