UNPKG

@rnm/tscx

Version:

A tsc wrapper with many convenient features.

40 lines 6.17 kB
import childProcess from "node:child_process"; import path from "node:path"; import process from "node:process"; import { fileURLToPath } from "node:url"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const REMOVE_PATH = path.resolve(__dirname, "remove.cli.mjs"); const COPYFILES_PATH = path.resolve(__dirname, "copyfiles.cli.mjs"); const TSC_PATH = path.resolve(process.cwd(), "node_modules", "typescript", "bin", "tsc"); function spawn(cmd, ...args) { return childProcess.spawn(cmd, args, { stdio: "inherit" }); } export function remove(filepath) { console.log("Remove", filepath); return spawn("node", REMOVE_PATH, filepath); } export function tsc(options) { console.log("Tsc", options); const args = [ TSC_PATH, ...Object.entries(options).flatMap(([key, value]) => value === false ? [] : value === true ? [`--${key}`] : [`--${key}`, value]), ]; return spawn("node", ...args); } export function copyfiles(rootDir, outDir) { console.log("Copyfiles", rootDir, "=>", outDir); return spawn("node", COPYFILES_PATH, rootDir, outDir); } export function script(scr) { console.log("Script", `npm run ${scr}`); return spawn("npm", "run", scr); // TODO: Use node --run instead of npm run. See https://nodejs.org/api/cli.html#--run } export function exec(filepath) { console.log("Execute", filepath); return spawn("node", filepath); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY21kL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sWUFBWSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDbkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV6QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUM5RCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBQ3BFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQzNCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFDYixjQUFjLEVBQ2QsWUFBWSxFQUNaLEtBQUssRUFDTCxLQUFLLENBQ04sQ0FBQztBQUVGLFNBQVMsS0FBSyxDQUFDLEdBQW1CLEVBQUUsR0FBRyxJQUFjO0lBQ25ELE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELE1BQU0sVUFBVSxNQUFNLENBQUMsUUFBZ0I7SUFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEMsT0FBTyxLQUFLLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUF5QztJQUMzRCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1QixNQUFNLElBQUksR0FBRztRQUNYLFFBQVE7UUFDUixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUNsRCxLQUFLLEtBQUssS0FBSztZQUNiLENBQUMsQ0FBQyxFQUFFO1lBQ0osQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJO2dCQUNkLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2QsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FDMUI7S0FDRixDQUFDO0lBQ0YsT0FBTyxLQUFLLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDaEMsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsT0FBZSxFQUFFLE1BQWM7SUFDdkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoRCxPQUFPLEtBQUssQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBRUQsTUFBTSxVQUFVLE1BQU0sQ0FBQyxHQUFXO0lBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFdBQVcsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN4QyxPQUFPLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMscUZBQXFGO0FBQ3hILENBQUM7QUFFRCxNQUFNLFVBQVUsSUFBSSxDQUFDLFFBQWdCO0lBQ25DLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoaWxkUHJvY2VzcyBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgcHJvY2VzcyBmcm9tIFwibm9kZTpwcm9jZXNzXCI7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSBcIm5vZGU6dXJsXCI7XG5cbmNvbnN0IF9fZGlybmFtZSA9IHBhdGguZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuY29uc3QgUkVNT1ZFX1BBVEggPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCBcInJlbW92ZS5jbGkubWpzXCIpO1xuY29uc3QgQ09QWUZJTEVTX1BBVEggPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCBcImNvcHlmaWxlcy5jbGkubWpzXCIpO1xuY29uc3QgVFNDX1BBVEggPSBwYXRoLnJlc29sdmUoXG4gIHByb2Nlc3MuY3dkKCksXG4gIFwibm9kZV9tb2R1bGVzXCIsXG4gIFwidHlwZXNjcmlwdFwiLFxuICBcImJpblwiLFxuICBcInRzY1wiLFxuKTtcblxuZnVuY3Rpb24gc3Bhd24oY21kOiBcIm5vZGVcIiB8IFwibnBtXCIsIC4uLmFyZ3M6IHN0cmluZ1tdKSB7XG4gIHJldHVybiBjaGlsZFByb2Nlc3Muc3Bhd24oY21kLCBhcmdzLCB7IHN0ZGlvOiBcImluaGVyaXRcIiB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZShmaWxlcGF0aDogc3RyaW5nKSB7XG4gIGNvbnNvbGUubG9nKFwiUmVtb3ZlXCIsIGZpbGVwYXRoKTtcbiAgcmV0dXJuIHNwYXduKFwibm9kZVwiLCBSRU1PVkVfUEFUSCwgZmlsZXBhdGgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHNjKG9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IGJvb2xlYW4+KSB7XG4gIGNvbnNvbGUubG9nKFwiVHNjXCIsIG9wdGlvbnMpO1xuICBjb25zdCBhcmdzID0gW1xuICAgIFRTQ19QQVRILFxuICAgIC4uLk9iamVjdC5lbnRyaWVzKG9wdGlvbnMpLmZsYXRNYXAoKFtrZXksIHZhbHVlXSkgPT5cbiAgICAgIHZhbHVlID09PSBmYWxzZVxuICAgICAgICA/IFtdXG4gICAgICAgIDogdmFsdWUgPT09IHRydWVcbiAgICAgICAgICA/IFtgLS0ke2tleX1gXVxuICAgICAgICAgIDogW2AtLSR7a2V5fWAsIHZhbHVlXSxcbiAgICApLFxuICBdO1xuICByZXR1cm4gc3Bhd24oXCJub2RlXCIsIC4uLmFyZ3MpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29weWZpbGVzKHJvb3REaXI6IHN0cmluZywgb3V0RGlyOiBzdHJpbmcpIHtcbiAgY29uc29sZS5sb2coXCJDb3B5ZmlsZXNcIiwgcm9vdERpciwgXCI9PlwiLCBvdXREaXIpO1xuICByZXR1cm4gc3Bhd24oXCJub2RlXCIsIENPUFlGSUxFU19QQVRILCByb290RGlyLCBvdXREaXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NyaXB0KHNjcjogc3RyaW5nKSB7XG4gIGNvbnNvbGUubG9nKFwiU2NyaXB0XCIsIGBucG0gcnVuICR7c2NyfWApO1xuICByZXR1cm4gc3Bhd24oXCJucG1cIiwgXCJydW5cIiwgc2NyKTsgLy8gVE9ETzogVXNlIG5vZGUgLS1ydW4gaW5zdGVhZCBvZiBucG0gcnVuLiBTZWUgaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9jbGkuaHRtbCMtLXJ1blxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhlYyhmaWxlcGF0aDogc3RyaW5nKSB7XG4gIGNvbnNvbGUubG9nKFwiRXhlY3V0ZVwiLCBmaWxlcGF0aCk7XG4gIHJldHVybiBzcGF3bihcIm5vZGVcIiwgZmlsZXBhdGgpO1xufVxuIl19