Skip to content

Commit f7da13a

Browse files
authored
chore: run tests on all supported versions of Node.js (#77)
* pin esmock dependency to v2.3 * patch esmock, don't pin version * update comments * run patch in `prepare` script
1 parent 4bde28a commit f7da13a

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
},
3131
"scripts": {
3232
"lint": "eslint . --report-unused-disable-directives",
33+
"prepare": "node tests/patch-esmock.js",
3334
"release:generate:latest": "eslint-generate-release",
3435
"release:generate:alpha": "eslint-generate-prerelease alpha",
3536
"release:generate:beta": "eslint-generate-prerelease beta",
@@ -58,7 +59,8 @@
5859
"eslint": "^8.48.0",
5960
"eslint-config-eslint": "^9.0.0",
6061
"eslint-release": "^3.2.0",
61-
"esmock": "^2.2.3",
62+
"esmock": "^2.5.8",
63+
"esmock_legacy": "npm:esmock@~2.3.8",
6264
"espree": "^9.0.0",
6365
"globals": "^13.21.0",
6466
"lint-staged": "^12.1.2",

tests/patch-esmock.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/**
2+
* @fileoverview Run by npm to replace esmock with a legacy release on older versions of Node.js.
3+
* @author Francesco Trotta
4+
*/
5+
6+
import { promises as fs } from "fs";
7+
8+
// * esmock < 2.4 works only on Node.js < 19.
9+
// * esmock >= 2.4 works only on Node.js >= 18.6.
10+
// If we are running Node.js < 19, replace the esmock dependency with the legacy release.
11+
// 111 is the ABI version number of Node.js 19: https://nodejs.org/en/download/releases
12+
if (process.versions.modules < 111) {
13+
(async () => {
14+
try {
15+
await fs.access("node_modules/esmock_legacy");
16+
} catch {
17+
return;
18+
}
19+
await fs.rmdir("node_modules/esmock", { recursive: true });
20+
await fs.rename("node_modules/esmock_legacy", "node_modules/esmock");
21+
})();
22+
}

0 commit comments

Comments
 (0)