Skip to content

Commit ffe4b36

Browse files
committed
check node engine is provided in package.json
1 parent 906fded commit ffe4b36

File tree

12 files changed

+234
-156
lines changed

12 files changed

+234
-156
lines changed

src/commands/check.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ const ExportsMapModel = zod.record(
2828
]),
2929
);
3030

31+
const EnginesModel = zod.record(zod.string(), zod.string());
32+
3133
const BinModel = zod.record(zod.string());
3234

3335
export const checkCommand = createCommand<{}, {}>(api => {
@@ -93,6 +95,9 @@ export const checkCommand = createCommand<{}, {}>(api => {
9395
skipExports: new Set<string>(config?.check?.skip ?? []),
9496
includesCommonJS: config?.commonjs ?? true,
9597
});
98+
await checkEngines({
99+
packageJSON: distPackageJSON,
100+
});
96101
} catch (err) {
97102
api.reporter.error(`Integrity check of '${packageJSON.name}' failed.`);
98103
api.reporter.log(err);
@@ -316,6 +321,19 @@ async function checkExportsMapIntegrity(args: {
316321
}
317322
}
318323

324+
async function checkEngines(args: {
325+
packageJSON: {
326+
name: string;
327+
engines: unknown;
328+
};
329+
}) {
330+
console.log(args.packageJSON);
331+
const engines = EnginesModel.safeParse(args.packageJSON.engines);
332+
if (engines.success === false || engines.data['node'] === undefined) {
333+
throw new Error('Please specify the node engine version in your package.json.');
334+
}
335+
}
336+
319337
const timeout = `;setTimeout(() => { throw new Error("The Node.js process hangs. There is probably some side-effects. All exports should be free of side effects.") }, 500).unref()`;
320338

321339
function runRequireJSFileCommand(args: { cwd: string; path: string }): ExecaChildProcess {

test/__fixtures__/simple-esm-only/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
{
22
"name": "simple-esm-only",
33
"type": "module",
4+
"engines": {
5+
"node": ">= 14.0.0"
6+
},
47
"main": "dist/esm/index.js",
58
"module": "dist/esm/index.js",
69
"exports": {

test/__fixtures__/simple-monorepo-pnpm/packages/a/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
{
22
"name": "a",
33
"type": "module",
4+
"engines": {
5+
"node": ">= 14.0.0"
6+
},
47
"main": "dist/cjs/index.js",
58
"module": "dist/esm/index.js",
69
"exports": {

test/__fixtures__/simple-monorepo-pnpm/packages/b/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
{
22
"name": "b",
33
"type": "module",
4+
"engines": {
5+
"node": ">= 14.0.0"
6+
},
47
"bin": {
58
"bbb": "dist/cjs/log-the-world.js"
69
},

test/__fixtures__/simple-monorepo-pnpm/packages/c/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
{
22
"name": "c",
3+
"engines": {
4+
"node": ">= 14.0.0"
5+
},
36
"main": "dist/cjs/index.js",
47
"module": "dist/esm/index.js",
58
"exports": {

test/__fixtures__/simple-monorepo/packages/a/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
{
22
"name": "a",
33
"type": "module",
4+
"engines": {
5+
"node": ">= 14.0.0"
6+
},
47
"main": "dist/cjs/index.js",
58
"module": "dist/esm/index.js",
69
"exports": {

test/__fixtures__/simple-monorepo/packages/b/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
{
22
"name": "b",
33
"type": "module",
4+
"engines": {
5+
"node": ">= 14.0.0"
6+
},
47
"bin": {
58
"bbb": "dist/cjs/log-the-world.js"
69
},

test/__fixtures__/simple-monorepo/packages/c/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
{
22
"name": "c",
3+
"engines": {
4+
"node": ">= 14.0.0"
5+
},
36
"main": "dist/cjs/index.js",
47
"module": "dist/esm/index.js",
58
"exports": {

test/__fixtures__/simple-types-only/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
{
22
"name": "simple-types-only",
33
"type": "module",
4+
"engines": {
5+
"node": ">= 14.0.0"
6+
},
47
"main": "dist/cjs/index.js",
58
"module": "dist/esm/index.js",
69
"exports": {

test/__fixtures__/simple/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
{
22
"name": "simple",
33
"type": "module",
4+
"engines": {
5+
"node": ">= 12.0.0"
6+
},
47
"main": "dist/cjs/index.js",
58
"module": "dist/esm/index.js",
69
"exports": {

0 commit comments

Comments
 (0)