blob: 28bb5a2a53ed9e2a20d38d3123d20c03baae7765 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
# Please upgrade Node [](https://www.npmjs.org/package/please-upgrade-node) [](https://travis-ci.org/typicode/please-upgrade-node) [](https://www.npmjs.com/package/please-upgrade-node)
> :information_desk_person: show a message to your users to upgrade Node instead of a stacktrace
It's common for new Node users to miss or not understand engines warning when installing a CLI. This package displays a beginner-friendly message if their Node version is below the one expected.
```sh
$ node -v
0.12
$ modern-cli
modern-cli requires at least version 6 of Node, please upgrade
```
## Support
If you like this project, you can support me on [GitHub Sponsors](https://github.com/users/typicode/sponsorship)
## Usage
```sh
npm install please-upgrade-node
```
Add `please-upgrade-node` at the top of your CLI
```js
#!/usr/bin/env node
const pkg = require('./package.json')
require('please-upgrade-node')(pkg) // <- Must run BEFORE requiring any other modules
// ...
```
Set in your `package.json` the required Node version
```js
{
"engines": {
"node": ">=6"
}
}
```
__Important__: `>=` is the only operator supported by `please-upgrade-node` (e.g. `>=6`, `>=6.0`, `>=6.0.0`).
## Options
You can set custom `exitCode` and `message` function if needed
```js
pleaseUpgradeNode(pkg, {
exitCode: 0, // Default: 1
message: function(requiredVersion) {
return 'Oops this program require Node ' + requiredVersion
}
})
```
__Important__: to keep `message` function compatible with older versions of Node, avoid using ES6 features like `=>` or string interpolation.
## See also
* [pkg-ok](https://github.com/typicode/pkg-ok) - :ok_hand: Prevents publishing a module with bad paths
* [husky](https://github.com/typicode/husky) - :dog: Git hooks made easy
* [update-notifier](https://github.com/yeoman/update-notifier) - Update notifications for your CLI app
Thanks to [zeit/serve](https://github.com/zeit/serve) for the error message inspiration.
## License
MIT - [Typicode :cactus:](https://github.com/typicode) - [Patreon](https://patreon.com/typicode)
|