Skip to content

Commit be72a7d

Browse files
committed
feat(cli): add node version check
See #70 and #71.
1 parent 3467d38 commit be72a7d

File tree

5 files changed

+60
-5
lines changed

5 files changed

+60
-5
lines changed

package-lock.json

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

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,15 @@
5151
"listr": "0.14.3",
5252
"marked": "0.8.2",
5353
"puppeteer": ">=2.0.0",
54+
"semver": "7.3.2",
5455
"serve-handler": "6.1.2"
5556
},
5657
"devDependencies": {
5758
"@types/highlight.js": "9.12.3",
5859
"@types/listr": "0.14.2",
5960
"@types/marked": "0.7.4",
6061
"@types/puppeteer": "2.0.1",
62+
"@types/semver": "7.1.0",
6163
"@types/serve-handler": "6.1.0",
6264
"ava": "3.7.0",
6365
"husky": "4.2.5",

src/cli.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,13 @@ import getPort from 'get-port';
1010
import getStdin from 'get-stdin';
1111
import Listr from 'listr';
1212
import path from 'path';
13+
import { PackageJson } from '.';
1314
import { Config, defaultConfig } from './lib/config';
1415
import { help } from './lib/help';
1516
import { setProcessAndTermTitle } from './lib/helpers';
1617
import { convertMdToPdf } from './lib/md-to-pdf';
1718
import { closeServer, serveDirectory } from './lib/serve-dir';
19+
import { validateNodeVersion } from './lib/validate-node-version';
1820

1921
// --
2022
// Configure CLI Arguments
@@ -59,8 +61,12 @@ main(cliFlags, defaultConfig).catch((error) => {
5961
async function main(args: typeof cliFlags, config: Config) {
6062
setProcessAndTermTitle('md-to-pdf');
6163

64+
if (!validateNodeVersion()) {
65+
throw new Error('Please use a Node.js version that satisfies the version specified in the engines field.');
66+
}
67+
6268
if (args['--version']) {
63-
return console.log((require('../package') as { version: string }).version);
69+
return console.log((require('../package') as PackageJson).version);
6470
}
6571

6672
if (args['--help']) {

src/index.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,10 @@ export const mdToPdf = async (input: { path: string } | { content: string }, con
4242
};
4343

4444
export default mdToPdf;
45+
46+
export interface PackageJson {
47+
engines: {
48+
node: string;
49+
};
50+
version: string;
51+
}

src/lib/validate-node-version.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import semver from 'semver';
2+
import { PackageJson } from '..';
3+
4+
const pkg: PackageJson = require('../../package');
5+
6+
export const validateNodeVersion = () => semver.satisfies(process.versions.node, pkg.engines.node);

0 commit comments

Comments
 (0)