@rnm/tscx
Version:
A tsc wrapper with many convenient features.
40 lines • 6.17 kB
JavaScript
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