daizong
Version:
`package.json` script runner for ES Modules
28 lines • 865 B
JavaScript
import { execa } from 'execa';
function escape(cmd) {
return `"${cmd.replace(/(["'$`\\])/g, '\\$1')}"`;
}
export default async function spawn(inputCmd, inputArgs, env, logger, workingDir) {
if (!inputCmd.length) {
throw new Error('The argument "inputCmd" cannot be empty');
}
logger?.(`[spawn-input] ${inputCmd} | ${inputArgs}`);
logger?.(`[spawn-input-env] ${JSON.stringify(env)}`);
let cmd = inputCmd;
if (inputArgs.length) {
cmd += inputArgs.map((s) => ` ${escape(s)}`).join(' ');
}
const mergedEnv = {
...process.env,
...env,
};
logger?.(`[spawn-run] ${cmd}`);
logger?.(`[spawn-run-env] ${JSON.stringify(mergedEnv)}`);
await execa(cmd, {
shell: true,
env: mergedEnv,
stdio: 'inherit',
cwd: workingDir,
});
}
//# sourceMappingURL=spawn.js.map