Files
test-repo/scripts/prepare-test-for-legacy-nodejs.js
T

97 lines
2.9 KiB
JavaScript

import fs from "node:fs";
const packageJsonFile = new URL("../package.json", import.meta.url);
const packageJson = JSON.parse(fs.readFileSync(packageJsonFile));
const argv = process.argv.slice(2);
const nodeVersion = Number(argv[1]);
if (argv[0] !== "--node-version" || !Number.isInteger(nodeVersion)) {
throw new Error("Expect `--node-version` argument.");
}
let jestVersion;
if (nodeVersion === 14) {
// `jest@30.0.0-alpha.2` is the last version that supports Node.js v14
jestVersion = "30.0.0-alpha.2";
} else if (nodeVersion === 16) {
// `jest@30.0.0-alpha.7` is the last version that supports Node.js v16
jestVersion = "30.0.0-alpha.7";
} else {
throw new Error("Unexpected `--node-version`.");
}
// Script to get dependencies
// console.log(
// Object.fromEntries(
// Array.from(
// fs
// .readFileSync("./yarn.lock", "utf8")
// .matchAll(/"(.*?)@npm:30\.0\.0-alpha\.3[",]/g),
// (match) => match[1],
// )
// .sort()
// .map((dependency) => [dependency, "30.0.0-alpha.2"]),
// ),
// );
fs.writeFileSync(
packageJsonFile,
JSON.stringify(
{
...packageJson,
resolutions: {
...packageJson.resolutions,
"@jest/console": jestVersion,
"@jest/core": jestVersion,
"@jest/environment": jestVersion,
"@jest/expect": jestVersion,
"@jest/expect-utils": jestVersion,
"@jest/fake-timers": jestVersion,
"@jest/globals": jestVersion,
"@jest/reporters": jestVersion,
"@jest/schemas": jestVersion,
"@jest/source-map": jestVersion,
"@jest/test-result": jestVersion,
"@jest/test-sequencer": jestVersion,
"@jest/transform": jestVersion,
// "@jest/types": jestVersion,
"babel-jest": jestVersion,
"babel-plugin-jest-hoist": jestVersion,
"babel-preset-jest": jestVersion,
"diff-sequences": jestVersion,
expect: jestVersion,
jest: jestVersion,
"jest-changed-files": jestVersion,
"jest-circus": jestVersion,
"jest-cli": jestVersion,
"jest-config": jestVersion,
"jest-diff": jestVersion,
// "jest-docblock": jestVersion,
"jest-each": jestVersion,
"jest-environment-node": jestVersion,
"jest-get-type": jestVersion,
"jest-haste-map": jestVersion,
"jest-leak-detector": jestVersion,
"jest-matcher-utils": jestVersion,
"jest-message-util": jestVersion,
"jest-mock": jestVersion,
"jest-regex-util": jestVersion,
"jest-resolve": jestVersion,
"jest-resolve-dependencies": jestVersion,
"jest-runner": jestVersion,
"jest-runtime": jestVersion,
"jest-snapshot": jestVersion,
"jest-util": jestVersion,
"jest-validate": jestVersion,
"jest-watcher": jestVersion,
"jest-worker": jestVersion,
"pretty-format": jestVersion,
},
},
undefined,
2,
),
);