exec ​
Executes a command and captures its stdout and stderr.
typescript
const result = await exec(command, args, options);Usage ​
exec(command, args, options?) ​
Use exec when you want to spawn a child process, wait for it to finish, and collect its output. By default, it throws an ExecError if the process exits with a non-zero exit code.
typescript
import { exec } from 'es-toolkit/server';
// Run a command and read its stdout.
const result = await exec('echo', ['hello']);
console.log(result.stdout.trim());
// => 'hello'
console.log(result.exitCode);
// => 0You can disable throwing and inspect the exit code directly.
typescript
import { exec } from 'es-toolkit/server';
const result = await exec('git', ['diff', '--quiet'], {
throwOnNonZeroExitCode: false,
});
console.log(result.exitCode);
// => 1 when there are changesYou can write a string to the process's stdin.
typescript
import { exec } from 'es-toolkit/server';
const result = await exec('cat', [], {
stdin: 'hello\nworld',
});
console.log(result.stdout);
// => 'hello\nworld'You can abort the process using an AbortSignal or a timeout.
typescript
import { exec } from 'es-toolkit/server';
const controller = new AbortController();
setTimeout(() => controller.abort(), 50);
// Rejects with an AbortError.
await exec('sleep', ['10'], {
signal: controller.signal,
});
// Rejects with an AbortError after 50ms.
await exec('sleep', ['10'], {
timeout: 50,
});Parameters ​
command(string): The command to execute.args(string[], optional): The arguments passed to the command. Defaults to[].options(ExecOptions, optional): The options object.signal(AbortSignal, optional): AnAbortSignalused to abort the process.timeout(number, optional): A timeout in milliseconds. The process is aborted when the timeout expires.stdin(string, optional): A string written to the process stdin.spawnOptions(SpawnOptions, optional): Additional options forwarded tochild_process.spawn.throwOnNonZeroExitCode(boolean, optional): Whether to throwExecErrorwhen the process exits with a non-zero exit code. Defaults totrue.
Returns ​
(Promise<ExecResult>): A promise that resolves with the process result.
pid(number | undefined): The PID of the spawned process.stdout(string): The captured stdout.stderr(string): The captured stderr.exitCode(number | null): The exit code of the process.
Throws ​
Throws an ExecError when throwOnNonZeroExitCode is true and the process exits with a non-zero exit code.
ExecError ​
An error thrown by exec when a process exits with a non-zero exit code. It has a result property that holds the captured process result.
typescript
import { exec, ExecError } from 'es-toolkit/server';
try {
await exec('git', ['diff', '--exit-code']);
} catch (error) {
if (error instanceof ExecError) {
console.log(error.result.exitCode);
// => 1 when there are changes
console.log(error.result.stdout);
console.log(error.result.stderr);
}
}
