@bconnorwhite/exec

    6.0.9 • Public • Published

    @bconnorwhite/exec

    npm typescript Coveralls Status GitHub stars Twitter Follow

    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";
    
    // 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

    Types

    function exec(command: string, args: Args, { env, silent }: Options): Promise<ExecResult>;
    function exec({ command, args, env, silent }: 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
    }

    execSync

    Usage

    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

    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",
        { // 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

    Types

    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;
    }

    executableToString

    Usage

    import { executableToString } from "@bconnorwhite/exec";
    
    executableToString({
      command: "foo",
      args: [
        "a",
        "b",
        {
          c: true,
          d: "ok",
          long: true
        }
      ]
    });
    // "foo a b -c -d ok --long"

    Types

    function executableToString(command: Executable): string;
    
    type Executable = {
      command: string;
      args?: string | string[];
      flags?: Flags;
      env?: NodeJS.ProcessEnv;
    }

    Dependenciesdependencies


    Dev DependenciesDavid


    License license

    MIT

    Install

    npm i @bconnorwhite/exec

    DownloadsWeekly Downloads

    90

    Version

    6.0.9

    License

    MIT

    Unpacked Size

    28.3 kB

    Total Files

    22

    Last publish

    Collaborators

    • avatar