Execute commands while keeping flags easily configurable as an object.
- Run one or multiple commands in parallel or series
- Easily define arguments and flags
- Easily extract JSON output
- Inject environment variables
- Set
silent
to block CLI output
Installation
yarn add @bconnorwhite/exec
npm install @bconnorwhite/exec
API
exec
Usage
import { exec } from "@bconnorwhite/exec";
exec("echo", "hello");
exec({
command: "babel",
args: [
"./src",
{
"out-dir": "./build",
"config-file": "./babel.config.json",
"w": true
}
]
});
Types
function exec(command: string, args: Args, { env, silent }: Options): Promise<ExecResult>;
function exec({ command, args, env, silent, cwd }: Executable): Promise<ExecResult>;
type Executable = {
command: string;
args?: Args;
cwd?: string;
env?: NodeJS.ProcessEnv;
silent?: boolean;
}
type Args = Arg | Arg[];
type Arg = string | Flags;
type Flags = {
[flag: string]: string | number | boolean | string[] | undefined;
}
type ExecResult = {
output: string;
error: string;
textOutput: string;
textError: string;
jsonOutput: () => JSONObject | JSONArray | undefined;
jsonError: () => JSONObject | JSONArray | undefined;
}
execSync
Usage
import { execSync } from "@bconnorwhite/exec";
execSync("echo", "hello");
execSync({
command: "babel",
args: [
"./src",
{
"out-dir": "./build",
"config-file": "./babel.config.json",
"w": true
}
]
});
Types
function execSync(command: string, args: Args, { env, silent }: Options): ExecResult;
function execSync({ command, args, env, silent }: Executable): ExecResult;
execAll
Usage
import { execAll } from "@bconnorwhite/exec";
execAll([{
command: "babel",
args: [
"./src",
{
"out-dir": "./build",
"config-file": "./babel.config.json",
"w": true
}
]
}, {
command: "tsc",
args: {
"emitDeclarationOnly": true
}
}], {
env: {
NODE_ENV: "development"
},
parallel: false
});
Types
function execAll(
executables: Executable[],
options: ExecAllOptions
): Promise<ExecResult[]>;
type ExecAllOptions = {
cwd?: string;
env?: NodeJS.ProcessEnv;
silent?: boolean;
parallel?: boolean;
}
executableToString
Usage
import { executableToString } from "@bconnorwhite/exec";
executableToString({
command: "foo",
args: [
"a",
"b",
{
c: true,
d: "ok",
long: true
}
]
});
Types
function executableToString(command: Executable): string;
type Executable = {
command: string;
args?: string | string[];
flags?: Flags;
env?: NodeJS.ProcessEnv;
}
Dependencies
Dev Dependencies
License 
MIT