Skip to content

Commit 4617fb3

Browse files
committed
handle general semver ranges, not just ">="
1 parent 99b6ebd commit 4617fb3

File tree

4 files changed

+46
-18
lines changed

4 files changed

+46
-18
lines changed

index.js

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,29 @@
1-
var semverCompare = require('semver-compare')
1+
var semver = require('semver')
22

33
module.exports = function pleaseUpgradeNode(pkg, opts) {
44
var opts = opts || {}
5-
var requiredVersion = pkg.engines.node.replace('>=', '')
6-
var currentVersion = process.version.replace('v', '')
7-
if (semverCompare(currentVersion, requiredVersion) === -1) {
5+
6+
var minVersion = semver.minVersion(pkg.engines.node)
7+
if (!semver.satisfies(process.version, pkg.engines.node)) {
88
if (opts.message) {
9-
console.error(opts.message(requiredVersion))
9+
console.error(opts.message(minVersion))
1010
} else {
11-
console.error(
12-
pkg.name +
13-
' requires at least version ' +
14-
requiredVersion +
15-
' of Node, please upgrade'
16-
)
11+
if (semver.lt(process.version, minVersion)) {
12+
console.error(
13+
pkg.name +
14+
' requires at least version ' +
15+
minVersion +
16+
' of Node, please upgrade'
17+
)
18+
} else {
19+
console.error(
20+
pkg.name +
21+
' requires version range "' +
22+
pkg.engines.node +
23+
'" of Node, while currently on ' +
24+
process.version
25+
)
26+
}
1727
}
1828

1929
if (opts.hasOwnProperty('exitCode')) {

package-lock.json

Lines changed: 8 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@
2828
"tape": "^5.6.3"
2929
},
3030
"dependencies": {
31-
"semver-compare": "^1.0.0"
31+
"semver": "^5.7.1"
3232
}
3333
}

test.js

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,22 @@ test('>=12 should exit', function(t) {
8787
t.equal(exitCode, 1)
8888
t.equal(
8989
errorMessage,
90-
'Lorem Ipsum requires at least version 12 of Node, please upgrade'
90+
'Lorem Ipsum requires at least version 12.0.0 of Node, please upgrade'
91+
)
92+
t.end()
93+
})
94+
95+
test('<1 should exit', function(t) {
96+
pleaseUpgrade({
97+
name: 'Lorem Ipsum',
98+
engines: {
99+
node: '<1'
100+
}
101+
})
102+
t.equal(exitCode, 1)
103+
t.equal(
104+
errorMessage,
105+
'Lorem Ipsum requires version range "<1" of Node, while currently on v10.0.0'
91106
)
92107
t.end()
93108
})

0 commit comments

Comments
 (0)