Remove please-upgrade-node (#19697)
This commit is contained in:
1 parent
e79f6b74da
commit
b2117a8065
8 files changed
+113
-31
No files matched your search
@@ -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'
|
||||
|
||||
+49
-11
@@ -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(
|
||||
|
||||
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;
|
||||
}
|
||||
);
|
||||
} else {
|
||||
promise = dynamicImport("../src/cli/index.js").then(function runCli(cli) {
|
||||
}
|
||||
|
||||
return dynamicImport("../src/cli/index.js").then(function runCli(cli) {
|
||||
return cli.run();
|
||||
});
|
||||
}
|
||||
|
||||
// Exposed for test
|
||||
module.exports.__promise = promise;
|
||||
module.exports.__promise = run();
|
||||
@@ -564,6 +564,8 @@ const configs = [
|
||||
rules: {
|
||||
"no-var": "off",
|
||||
"prefer-arrow-callback": "off",
|
||||
"object-shorthand": "off",
|
||||
"no-console": "off",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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");
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -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)
|
||||
);
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in new issue
Block a user