fs-safe/scripts/prepack-build.mjs
2026-05-06 07:20:21 +01:00

51 lines
1.1 KiB
JavaScript

#!/usr/bin/env node
import { existsSync } from "node:fs";
import { spawnSync } from "node:child_process";
import { createRequire } from "node:module";
const require = createRequire(import.meta.url);
function resolveTypeScriptCompiler() {
try {
return require.resolve("typescript/bin/tsc");
} catch {
return undefined;
}
}
function run(command, args, env = {}) {
const result = spawnSync(command, args, {
stdio: "inherit",
env: { ...process.env, ...env },
});
if (result.status !== 0) {
process.exit(result.status ?? 1);
}
}
let tscBin = resolveTypeScriptCompiler();
if (!tscBin || !existsSync(tscBin)) {
run(
"pnpm",
[
"add",
"--save-dev",
"typescript@^5.8.3",
"@types/node@^22.15.19",
"--ignore-scripts",
"--lockfile=false",
],
{
npm_config_lockfile_only: "false",
PNPM_CONFIG_LOCKFILE_ONLY: "false",
},
);
tscBin = resolveTypeScriptCompiler();
if (!tscBin || !existsSync(tscBin)) {
throw new Error("TypeScript compiler is unavailable after installing dev dependencies");
}
}
run(process.execPath, [tscBin, "-p", "tsconfig.json"]);