Remove please-upgrade-node (#19697)

This commit is contained in:
fisker Cheung authored and GitHub committed 2026-07-24 08:51:20 +08:00
1 parent e79f6b74da
commit b2117a8065
8 files changed
+117 -35

No files matched your search

+1 -1
View File
@@ -237,7 +237,7 @@ jobs:
- name: Run CLI on Node.js v0.10.48
working-directory: dist/prettier
run: node bin/prettier.cjs --version 2>&1 >/dev/null | grep "prettier requires at least version 14 of Node, please upgrade" || exit 1
run: node bin/prettier.cjs --version 2>&1 >/dev/null | grep "Prettier requires at least version 14 of Node.js, please upgrade!" || exit 1
preview:
if: github.repository == 'prettier/prettier'
+53 -15
View File
@@ -8,29 +8,67 @@ if (typeof nodeModule.enableCompileCache === "function") {
nodeModule.enableCompileCache();
}
var pleaseUpgradeNode = require("please-upgrade-node");
var packageJson = require("../package.json");
function parseVersion(version) {
var parts = version.split(".", 3);
return {
major: Number(parts[0]),
minor: Number(parts[1]) || 0,
patch: Number(parts[2]) || 0
};
}
pleaseUpgradeNode(packageJson);
function isVersionSatisfies(version, required) {
required = parseVersion(required);
version = parseVersion(version);
var dynamicImport = new Function("module", "return import(module)");
return (
version.major > required.major ||
(version.major === required.major && version.minor > required.minor) ||
(version.major === required.major &&
version.minor === required.minor &&
version.patch >= required.patch)
);
}
function shouldEnableExperimentalCli() {
var index = process.argv.indexOf("--experimental-cli");
var promise;
var index = process.argv.indexOf("--experimental-cli");
if (process.env.PRETTIER_EXPERIMENTAL_CLI || index !== -1) {
if (index !== -1) {
process.argv.splice(index, 1);
}
promise = dynamicImport("../src/experimental-cli/index.js").then(
function (cli) {
return cli.__promise;
}
);
} else {
promise = dynamicImport("../src/cli/index.js").then(function runCli(cli) {
return index !== -1 || process.env.PRETTIER_EXPERIMENTAL_CLI;
}
var requiredVersion = require("../package.json").engines.node.replace(">=", "");
function run() {
// Based on `please-upgrade-node` package
if (!isVersionSatisfies(process.versions.node, requiredVersion)) {
var message =
"Prettier requires at least version " +
requiredVersion +
" of Node.js, please upgrade!";
process.exitCode = 1;
console.error(message);
return Promise.reject(new Error(message));
}
var dynamicImport = new Function("module", "return import(module)");
if (shouldEnableExperimentalCli()) {
return dynamicImport("../src/experimental-cli/index.js").then(
function (cli) {
return cli.__promise;
}
);
}
return dynamicImport("../src/cli/index.js").then(function runCli(cli) {
return cli.run();
});
}
// Exposed for test
module.exports.__promise = promise;
module.exports.__promise = run();
+2
View File
@@ -564,6 +564,8 @@ const configs = [
rules: {
"no-var": "off",
"prefer-arrow-callback": "off",
"object-shorthand": "off",
"no-console": "off",
},
},
{
-1
View File
@@ -108,7 +108,6 @@
"oxc-parser": "0.141.0",
"parse-json": "8.3.0",
"picocolors": "1.1.1",
"please-upgrade-node": "3.2.0",
"postcss": "8.5.22",
"postcss-less": "6.0.0",
"postcss-media-query-parser": "0.2.3",
+9 -1
View File
@@ -2,7 +2,11 @@ import { createRequire } from "node:module";
import path from "node:path";
import url from "node:url";
import { outdent } from "outdent";
import { DIST_DIR, PROJECT_ROOT } from "../../utilities/index.js";
import {
DIST_DIR,
PRODUCTION_MINIMAL_NODE_JS_VERSION,
PROJECT_ROOT,
} from "../../utilities/index.js";
import { createJavascriptModuleBuilder } from "../builders/javascript-module.js";
import esmifyTypescriptEslint from "../hacks/esmify-typescript-eslint.js";
import modifyTypescriptModule from "../hacks/modify-typescript-module.js";
@@ -133,6 +137,10 @@ const cliModule = {
{
module: path.join(PROJECT_ROOT, "bin/prettier.cjs"),
process(text) {
text = text.replace(
'require("../package.json").engines.node.replace(">=", "")',
JSON.stringify(PRODUCTION_MINIMAL_NODE_JS_VERSION),
);
text = text.replace(
"../src/cli/index.js",
"../internal/legacy-cli.mjs",
@@ -0,0 +1,38 @@
import { PRODUCTION_MINIMAL_NODE_JS_VERSION } from "../../../scripts/utilities/index.js";
const minimalVersion =
process.env.NODE_ENV === "production"
? Number(PRODUCTION_MINIMAL_NODE_JS_VERSION)
: // Dev version
22;
describe("Check Node.js version", () => {
for (const version of [
"0.10.0",
"0.12.0",
...(function* () {
for (let major = 4; major < minimalVersion; major++) {
if (major >= 26 || major % 2 === 0) {
yield `${major}.0.0`;
}
}
})(),
]) {
test(version, async () => {
await expect(() =>
runCli("cli/", ["--version"], { mockNodeVersion: version }),
).rejects.toThrow(
/Prettier requires at least version \d+ of Node.js, please upgrade!/,
);
});
}
for (const version of [`${minimalVersion}.0.0`, "current"]) {
test(version, async () => {
const { stdout } = await runCli("cli/", ["--version"], {
mockNodeVersion: version === "current" ? undefined : version,
});
expect(typeof stdout).toBe("string");
});
}
});
+14
View File
@@ -19,6 +19,7 @@ const replaceAll = (text, find, replacement) =>
text.replaceAll
? text.replaceAll(find, replacement)
: text.split(find).join(replacement);
const originalNodeVersion = process.versions.node;
async function getApiMockable() {
const prettier = await import(url.pathToFileURL(prettierMainEntry));
@@ -86,9 +87,22 @@ async function mockImplementations(options) {
});
}
let nodeVersionMocked = false;
async function run(options) {
await mockImplementations(options);
if (!nodeVersionMocked) {
nodeVersionMocked = true;
Object.defineProperty(process.versions, "node", {
get value() {
return options.mockNodeVersion || originalNodeVersion;
},
writable: false,
enumerable: true,
configurable: true,
});
}
const { __promise: promise } = await import(
url.pathToFileURL(prettierCliEntry)
);
-17
View File
@@ -8147,15 +8147,6 @@ __metadata:
languageName: node
linkType: hard
"please-upgrade-node@npm:3.2.0":
version: 3.2.0
resolution: "please-upgrade-node@npm:3.2.0"
dependencies:
semver-compare: "npm:^1.0.0"
checksum: 10/d87c41581a2a022fbe25965a97006238cd9b8cbbf49b39f78d262548149a9d30bd2bdf35fec3d810e0001e630cd46ef13c7e19c389dea8de7e64db271a2381bb
languageName: node
linkType: hard
"pluralize@npm:^8.0.0":
version: 8.0.0
resolution: "pluralize@npm:8.0.0"
@@ -8362,7 +8353,6 @@ __metadata:
oxc-parser: "npm:0.141.0"
parse-json: "npm:8.3.0"
picocolors: "npm:1.1.1"
please-upgrade-node: "npm:3.2.0"
postcss: "npm:8.5.22"
postcss-less: "npm:6.0.0"
postcss-media-query-parser: "npm:0.2.3"
@@ -8733,13 +8723,6 @@ __metadata:
languageName: node
linkType: hard
"semver-compare@npm:^1.0.0":
version: 1.0.0
resolution: "semver-compare@npm:1.0.0"
checksum: 10/75f9c7a7786d1756f64b1429017746721e07bd7691bdad6368f7643885d3a98a27586777e9699456564f4844b407e9f186cc1d588a3f9c0be71310e517e942c3
languageName: node
linkType: hard
"semver@npm:7.8.5, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.2, semver@npm:^7.6.3, semver@npm:^7.7.2, semver@npm:^7.7.3, semver@npm:^7.7.4, semver@npm:^7.8.1, semver@npm:^7.8.5":
version: 7.8.5
resolution: "semver@npm:7.8.5"