mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
6.0 KiB
139 lines
6.0 KiB
<!doctype html>
|
|
<html>
|
|
<title>semver</title>
|
|
<meta http-equiv="content-type" value="text/html;utf-8">
|
|
<link rel="stylesheet" type="text/css" href="../static/style.css">
|
|
|
|
<body>
|
|
<div id="wrapper">
|
|
<h1><a href="../doc/semver.html">semver</a></h1> <p>The semantic versioner for npm</p>
|
|
|
|
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
|
|
|
<p>The npm semantic versioning utility.</p>
|
|
|
|
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
|
|
|
<p>As a node module:</p>
|
|
|
|
<pre><code>$ npm install semver
|
|
|
|
semver.valid('1.2.3') // true
|
|
semver.valid('a.b.c') // false
|
|
semver.clean(' =v1.2.3 ') // '1.2.3'
|
|
semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
|
|
semver.gt('1.2.3', '9.8.7') // false
|
|
semver.lt('1.2.3', '9.8.7') // true</code></pre>
|
|
|
|
<p>As a command-line utility:</p>
|
|
|
|
<pre><code>$ npm install semver -g
|
|
$ semver -h
|
|
|
|
Usage: semver -v <version> [-r <range>]
|
|
Test if version(s) satisfy the supplied range(s),
|
|
and sort them.
|
|
|
|
Multiple versions or ranges may be supplied.
|
|
|
|
Program exits successfully if any valid version satisfies
|
|
all supplied ranges, and prints all satisfying versions.
|
|
|
|
If no versions are valid, or ranges are not satisfied,
|
|
then exits failure.
|
|
|
|
Versions are printed in ascending order, so supplying
|
|
multiple versions to the utility will just sort them.</code></pre>
|
|
|
|
<h2 id="Versions">Versions</h2>
|
|
|
|
<p>A version is the following things, in this order:</p>
|
|
|
|
<ul><li>a number (Major)</li><li>a period</li><li>a number (minor)</li><li>a period</li><li>a number (patch)</li><li>OPTIONAL: a hyphen, followed by a number (build)</li><li>OPTIONAL: a collection of pretty much any non-whitespace characters
|
|
(tag)</li></ul>
|
|
|
|
<p>A leading <code>"="</code> or <code>"v"</code> character is stripped off and ignored.</p>
|
|
|
|
<h2 id="Comparisons">Comparisons</h2>
|
|
|
|
<p>The ordering of versions is done using the following algorithm, given
|
|
two versions and asked to find the greater of the two:</p>
|
|
|
|
<ul><li>If the majors are numerically different, then take the one
|
|
with a bigger major number. <code>2.3.4 > 1.3.4</code></li><li>If the minors are numerically different, then take the one
|
|
with the bigger minor number. <code>2.3.4 > 2.2.4</code></li><li>If the patches are numerically different, then take the one with the
|
|
bigger patch number. <code>2.3.4 > 2.3.3</code></li><li>If only one of them has a build number, then take the one with the
|
|
build number. <code>2.3.4-0 > 2.3.4</code></li><li>If they both have build numbers, and the build numbers are numerically
|
|
different, then take the one with the bigger build number.
|
|
<code>2.3.4-10 > 2.3.4-9</code></li><li>If only one of them has a tag, then take the one without the tag.
|
|
<code>2.3.4 > 2.3.4-beta</code></li><li>If they both have tags, then take the one with the lexicographically
|
|
larger tag. <code>2.3.4-beta > 2.3.4-alpha</code></li><li>At this point, they're equal.</li></ul>
|
|
|
|
<h2 id="Ranges">Ranges</h2>
|
|
|
|
<p>The following range styles are supported:</p>
|
|
|
|
<ul><li><code>>1.2.3</code> Greater than a specific version.</li><li><code><1.2.3</code> Less than</li><li><code>1.2.3 - 2.3.4</code> := <code>>=1.2.3 <=2.3.4</code></li><li><code>~1.2.3</code> := <code>>=1.2.3 <1.3.0</code></li><li><code>~1.2</code> := <code>>=1.2.0 <2.0.0</code></li><li><code>~1</code> := <code>>=1.0.0 <2.0.0</code></li><li><code>1.2.x</code> := <code>>=1.2.0 <1.3.0</code></li><li><code>1.x</code> := <code>>=1.0.0 <2.0.0</code></li></ul>
|
|
|
|
<p>Ranges can be joined with either a space (which implies "and") or a
|
|
<code>||</code> (which implies "or").</p>
|
|
|
|
<h2 id="Functions">Functions</h2>
|
|
|
|
<ul><li>valid(v): Return the parsed version, or null if it's not valid.</li><li>inc(v, release): Return the version incremented by the release type
|
|
(major, minor, patch, or build), or null if it's not valid.</li></ul>
|
|
|
|
<h3 id="Comparison">Comparison</h3>
|
|
|
|
<ul><li>gt(v1, v2): <code>v1 > v2</code></li><li>gte(v1, v2): <code>v1 >= v2</code></li><li>lt(v1, v2): <code>v1 < v2</code></li><li>lte(v1, v2): <code>v1 <= v2</code></li><li>eq(v1, v2): <code>v1 == v2</code> This is true if they're logically equivalent,
|
|
even if they're not the exact same string. You already know how to
|
|
compare strings.</li><li>neq(v1, v2): <code>v1 != v2</code> The opposite of eq.</li><li>cmp(v1, comparator, v2): Pass in a comparison string, and it'll call
|
|
the corresponding function above. <code>"==="</code> and <code>"!=="</code> do simple
|
|
string comparison, but are included for completeness. Throws if an
|
|
invalid comparison string is provided.</li><li>compare(v1, v2): Return 0 if v1 == v2, or 1 if v1 is greater, or -1 if
|
|
v2 is greater. Sorts in ascending order if passed to Array.sort().</li><li>rcompare(v1, v2): The reverse of compare. Sorts an array of versions
|
|
in descending order when passed to Array.sort().</li></ul>
|
|
|
|
<h3 id="Ranges">Ranges</h3>
|
|
|
|
<ul><li>validRange(range): Return the valid range or null if it's not valid</li><li>satisfies(version, range): Return true if the version satisfies the
|
|
range.</li><li>maxSatisfying(versions, range): Return the highest version in the list
|
|
that satisfies the range, or null if none of them do.</li></ul>
|
|
|
|
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
|
|
|
<ul><li><a href="../doc/json.html">json(1)</a></li></ul>
|
|
</div>
|
|
<p id="footer">semver — npm@1.1.49</p>
|
|
<script>
|
|
;(function () {
|
|
var wrapper = document.getElementById("wrapper")
|
|
var els = Array.prototype.slice.call(wrapper.getElementsByTagName("*"), 0)
|
|
.filter(function (el) {
|
|
return el.parentNode === wrapper
|
|
&& el.tagName.match(/H[1-6]/)
|
|
&& el.id
|
|
})
|
|
var l = 2
|
|
, toc = document.createElement("ul")
|
|
toc.innerHTML = els.map(function (el) {
|
|
var i = el.tagName.charAt(1)
|
|
, out = ""
|
|
while (i > l) {
|
|
out += "<ul>"
|
|
l ++
|
|
}
|
|
while (i < l) {
|
|
out += "</ul>"
|
|
l --
|
|
}
|
|
out += "<li><a href='#" + el.id + "'>" +
|
|
( el.innerText || el.text || el.innerHTML)
|
|
+ "</a>"
|
|
return out
|
|
}).join("\n")
|
|
toc.id = "toc"
|
|
document.body.appendChild(toc)
|
|
})()
|
|
</script>
|
|
</body></html>
|
|
|