Back to Explore

sindresorhus/execa

GitHub
1 watchersOpen source

Last release: 6 months ago

Execa is a Node.js library for running commands from your script, application, or library, built on top of Node’s child_process. It’s useful for executing local binaries with a programmatic, “optimized for humans” API, including advanced output handling like piping multiple subprocesses and returning detailed errors.

Project status

  • Actively maintained, recent GitHub activity exists (last upstream push on 2026-01-29), and multiple tagged updates are shown in 2025.
  • Apparent update cadence is moderate, with several updates in mid-2025 (9.5.3 then 9.6.0 within about 2 to 3 weeks), followed by a later patch in late 2025 (9.6.1 on 2025-11-29).

AI summary generated Today

AI-generated from public sources. May be inaccurate. Report

Recent updates

  • v9.6.1

    6 months ago

    v9.6.1 is a small patch release focused on TypeScript typing. The only apparent functional change in the diff is exporting the `VerboseOption` type correctly, with additional documentation and test adjustments.

  • v9.6.0

    5/26/2025

    v9.6.0 appears to be primarily a dependency update release. The code diff also includes a small change in the test helper that overrides the global Promise implementation.

  • v9.5.3

    5/8/2025

    v9.5.3 addresses a Node 24 deprecation warning related to using the `shell` option. The implementation change modifies how `execa` calls `child_process.spawn` and `spawnSync` when `shell: true`, by pre-concatenating the command into a single string.

  • v9.5.2

    12/7/2024

    v9.5.2 is a small patch release that fixes handling of escaped newlines inside template strings. It adjusts the template parsing logic so sequences like a backslash followed by a newline are treated as intended whitespace/newline content rather than mis-parsed characters.

  • v9.5.1

    10/29/2024

    v9.5.1 is presented as a small bug fix release addressing odd characters printed in `verbose` mode on Windows. The code diff shows a more substantial change to how verbose output is written to stderr, alongside test and CI adjustments for newer Node versions.

    Breaking
  • v9.5.0

    10/27/2024

    v9.5.0 introduces an `append` option for file-based redirection so that when stdout or stderr is redirected to a file, output can be appended instead of overwriting. The change updates TypeScript types and adjusts both async and sync output handling to support append semantics.

    Features
  • v9.4.1

    10/16/2024

    v9.4.1 includes a Deno compatibility fix related to handling node executables derived from Deno's `process.execPath`. The code changes ensure these Deno-style execPath objects are normalized to a string before being used in argument processing, and extend related piping logic to accept the same input shape.

  • v9.4.0

    9/16/2024

    v9.4.0 primarily introduces the new companion package documentation for nano-spawn, and includes bug fix improvements related to keeping the PATH environment variable small when using execaNode() and preferLocal. The code diff provided is almost entirely documentation changes plus a dependency bump to npm-run-path 6.0.0, which is likely where the PATH-related behavior changes come from.

    Features
  • v9.3.1

    8/14/2024

    v9.3.1 mainly addresses a runtime crash scenario for Node.js builds without ICU support, and fixes the TypeScript type for the `env` option (notably for Remix and Next.js users). It also includes documentation updates and several test/doc-only changes, plus dependency/tooling version bumps.

  • v9.3.0

    6/21/2024

    v9.3.0 adds support for passing a function to the `verbose` option to customize how execa prints verbose logs. The implementation refactors the verbose subsystem and adds new types that describe the verbose event object passed to the function.

    Features