Skip to content

Commit 3cc5a94

Browse files
ekmartinisaacs
authored andcommitted
Add prerelase(v) that returns prerelease components, fixes #133
1 parent 3643836 commit 3cc5a94

File tree

3 files changed

+34
-0
lines changed

3 files changed

+34
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,8 @@ strings that they parse.
289289
same as `prepatch`. It increments the patch version, then makes a
290290
prerelease. If the input version is already a prerelease it simply
291291
increments it.
292+
* `prerelease(v)`: Returns an array of prerelease components, or null
293+
if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]`
292294
* `major(v)`: Return the major version number.
293295
* `minor(v)`: Return the minor version number.
294296
* `patch(v)`: Return the patch version number.

semver.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1186,3 +1186,9 @@ function outside(version, range, hilo, loose) {
11861186
}
11871187
return true;
11881188
}
1189+
1190+
exports.prerelease = prerelease;
1191+
function prerelease(version, loose) {
1192+
var parsed = parse(version, loose);
1193+
return (parsed && parsed.prerelease.length) ? parsed.prerelease : null;
1194+
}

test/prerelease.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
var tap = require('tap');
2+
var test = tap.test;
3+
var semver = require('../semver.js');
4+
var prerelease = semver.prerelease;
5+
6+
test('\nprerelease', function(t) {
7+
// [prereleaseParts, version, loose]
8+
[
9+
[['alpha', 1], '1.2.2-alpha.1'],
10+
[[1], '0.6.1-1'],
11+
[['beta', 2], '1.0.0-beta.2'],
12+
[['pre'], 'v0.5.4-pre'],
13+
[['alpha', 1], '1.2.2-alpha.1', false],
14+
[['beta'], '0.6.1beta', true],
15+
[null, '1.0.0', true],
16+
[null, '~2.0.0-alpha.1', false],
17+
[null, 'invalid version'],
18+
].forEach(function(tuple) {
19+
var expected = tuple[0];
20+
var version = tuple[1];
21+
var loose = tuple[2];
22+
var msg = 'prerelease(' + version + ')';
23+
t.same(prerelease(version, loose), expected, msg);
24+
});
25+
t.end();
26+
});

0 commit comments

Comments
 (0)