$ gnpm install @bconnorwhite/exec
Execute commands while keeping flags easily configurable as an object.
silent
to block CLI outputyarn add @bconnorwhite/exec
npm install @bconnorwhite/exec
import { exec } from "@bconnorwhite/exec";
// Simple usage:
exec("echo", "hello");
// Explicit usage:
exec({
command: "babel",
args: [
"./src",
{ // Objects are used for flags
"out-dir": "./build",
"config-file": "./babel.config.json",
"w": true // single character flags will be set using a single dash
}
]
});
// Equivalent of:
// babel ./src --out-dir ./build --config-file ./babel.config.json -w
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; // output stripped on ANSI colors
textError: string; // error stripped on ANSI colors
jsonOutput: () => JSONObject | JSONArray | undefined; // First JSON object or array in output
jsonError: () => JSONObject | JSONArray | undefined; // First JSON object or array in error
}
import { execSync } from "@bconnorwhite/exec";
// Simple usage:
execSync("echo", "hello");
// Object usage:
execSync({
command: "babel",
args: [
"./src",
{ // Objects are used for flags
"out-dir": "./build",
"config-file": "./babel.config.json",
"w": true // single character flags will be set using a single dash
}
]
});
// Equivalent of:
// babel ./src --out-dir ./build --config-file ./babel.config.json -w
function execSync(command: string, args: Args, { env, silent }: Options): ExecResult;
function execSync({ command, args, env, silent }: Executable): ExecResult;
import { execAll } from "@bconnorwhite/exec";
execAll([{
command: "babel",
args: [
"./src",
{ // Objects are used for flags
"out-dir": "./build",
"config-file": "./babel.config.json",
"w": true // single character flags will be set using a single dash
}
]
}, {
command: "tsc",
args: {
"emitDeclarationOnly": true
}
}], {
env: {
NODE_ENV: "development"
},
parallel: false
});
// Equivalent of:
// NODE_ENV=development babel ./src --out-dir ./build --config-file ./babel.config.json --watch && tsc --emitDeclarationOnly
function execAll(
executables: Executable[],
options: ExecAllOptions
): Promise<ExecResult[]>;
type ExecAllOptions = {
cwd?: string;
env?: NodeJS.ProcessEnv; // default, will not override individual commands
silent?: boolean; // default, will not override individual commands
parallel?: boolean;
}
import { executableToString } from "@bconnorwhite/exec";
executableToString({
command: "foo",
args: [
"a",
"b",
{
c: true,
d: "ok",
long: true
}
]
});
// "foo a b -c -d ok --long"
function executableToString(command: Executable): string;
type Executable = {
command: string;
args?: string | string[];
flags?: Flags;
env?: NodeJS.ProcessEnv;
}
Copyright 2013 - present © cnpmjs.org | Home |