awesome-repositories.com
Blog
MCP
awesome-repositories.com

Entdecke die besten Open-Source-Repositories mit KI-gestützter Suche.

EntdeckenKuratierte SuchenOpen-Source-AlternativenSelf-hosted SoftwareBlogSitemap
ProjektÜber unsRanking-MethodikPresseMCP-Server
RechtlichesDatenschutzAGB
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
sindresorhus avatar

sindresorhus/execa

0
View on GitHub↗
7,517 Stars·258 Forks·JavaScript·MIT·8 Aufrufe

Execa

Execa is a promise-based process execution library that serves as a wrapper for the Node.js child process module. It functions as a shell command runner and subprocess management tool, simplifying the execution of external commands and binaries.

The library distinguishes itself through automatic argument escaping to prevent shell injection and the use of abort signals for graceful process termination. It also provides an inter-process communication wrapper for exchanging structured JSON data and messages between parent and child processes.

Its capabilities cover a broad range of process I/O management, including interleaved output capture, binary-aware stream handling, and the ability to pipe, redirect, or transform standard input and output. It further provides monitoring tools for retrieving execution metadata and capturing enriched error objects that include exit codes and duration.

Features

  • Subprocess Management - Routes the output of one subprocess into the input of another using linear chains or multiple destinations.
  • Promise-Based Flow Control - Wraps Node.js child process modules to provide asynchronous control flow and detailed error objects.
  • CLI Process Controls - Cancels running processes using an abort signal to allow the child process to clean up before exiting.
  • Command Argument Parsers - Handles escaping of arguments containing spaces or special characters to prevent injection.
  • Command Line IO Handlers - Provides a toolkit for piping, redirecting, and transforming standard input and output streams from external commands.
  • Command Line Tooling - Provides the foundational capabilities for building developer tools that execute local binaries and capture interleaved output.
  • Output Redirection - Routes standard output and error to pipes, files, the parent terminal, or multiple targets simultaneously.
  • Process Lifecycle Managers - Returns a subprocess instance immediately upon spawning to provide access to process IDs and runtime properties.
  • Real-Time Output Streaming - Iterates over output lines as they are produced or converts a subprocess into a duplex stream.
  • Shell Command Execution - Runs shell commands and external binaries from Node.js with promise-based results and automatic argument escaping.
  • Shell Command Runners - Provides an interface for executing system-level shell commands with built-in argument escaping for security.
  • File-Based Redirection - Writes a command's standard output directly to a file by overwriting or appending content.
  • Process Output Iteration - Processes the standard output and error of a running command line by line as data is produced.
  • I/O Redirections - Redirects standard input and output to files, strings, or web streams via splitting or transformation functions.
  • Interleaved Output Capture - Combines standard output and error streams into a single chronological sequence to preserve message ordering.
  • Process IO Pipelines - Provides advanced streaming, filtering, and redirection of standard I/O between multiple subprocesses or files.
  • Process Termination Signals - Integrates the Web API AbortController to cancel running subprocesses and trigger graceful cleanup routines.
  • Process Execution Wrappers - Provides a promise-based wrapper for the Node.js child_process module to simplify the execution of external commands and binaries.
  • String Escapers - Automatically quotes and escapes shell arguments to prevent command injection and ensure literal string interpretation.
  • Standard Input Processing - Feeds data into a command's standard input using strings, files, or web streams.
  • Command Injection Prevention - Prevents shell injection vulnerabilities by treating input as literal text and automatically escaping arguments.
  • Inter-Process Communication - Implements mechanisms for exchanging structured JSON data and messages between a parent Node.js process and its subprocesses.
  • Interleaved Stream Capture - Merges standard output and error into a single stream to preserve the chronological order of messages.
  • Binary Stream Chunking - Iterates over subprocess output as arbitrary binary chunks to prevent data corruption from character encoding.
  • Binary Standard Input - Passes binary data to a subprocess using buffers or files to handle input containing null bytes.
  • Command Execution - Supports executing external commands synchronously by blocking the event loop until completion.
  • Stream Output Transformation - Modifies output lines via a generator function to rewrite, filter, or expand data in real time.
  • Command String Parsers - Splits a command string into an array of arguments for easier programmatic execution.
  • Local Binary Execution - Searches for and runs executable binaries located in local dependency folders or specified directories.
  • Subprocess Message Exchange - Implements the sending and receiving of messages between parent and subprocess using async iterables.
  • Execution Environment Configurations - Sets the working directory, environment variables, and binary preferences for a specific command execution.
  • Communication Channels - Establishes a dedicated message bus between parent and child processes for exchanging structured JSON data.
  • Binary Stream Handling - Provides raw buffer access to subprocess output to prevent data corruption from character encoding.
  • Output Line Splitting - Splits the standard output of a command into an array or async iterable for line-by-line processing.
  • Process Signal Forwarding - Forces subprocesses to exit cleanly when they intercept signals or the parent process terminates abruptly.
  • Shebang-Based Execution - Detects and prepends the correct runtime executable based on the script file header for cross-platform execution.
  • IO Stream Transformers - Uses async generators to filter or modify input and output data streams in real time.
  • Error Contextualization - Provides enriched error objects containing command, duration, exit code, and full output for improved debugging.
  • Subprocess Error Classification - Captures detailed error objects from external commands to distinguish between timeouts, cancellations, and execution failures.
  • Binary Output Capture - Captures subprocess output as raw byte arrays to preserve non-text data and avoid encoding issues.
  • Execution Metadata - Retrieves detailed execution metadata, including the original command string and total duration.
  • Shell and Scripting - Cross-platform child process execution.
  • General Utilities - Improved child process execution.
  • Shell and Execution - Cross-platform implementation of child process execution.
  • Works with AVA - Listed in the “Works with AVA” section of the Awesome Ava awesome list.

Star-Verlauf

Star-Verlauf für sindresorhus/execaStar-Verlauf für sindresorhus/execa

KI-Suche

Entdecke weitere awesome Repositories

Beschreibe in einfachen Worten, was du brauchst — die KI bewertet tausende kuratierte Open-Source-Projekte nach Relevanz.

Start searching with AI

Häufig gestellte Fragen

Was macht sindresorhus/execa?

Execa is a promise-based process execution library that serves as a wrapper for the Node.js child process module. It functions as a shell command runner and subprocess management tool, simplifying the execution of external commands and binaries.

Was sind die Hauptfunktionen von sindresorhus/execa?

Die Hauptfunktionen von sindresorhus/execa sind: Subprocess Management, Promise-Based Flow Control, CLI Process Controls, Command Argument Parsers, Command Line IO Handlers, Command Line Tooling, Output Redirection, Process Lifecycle Managers.

Welche Open-Source-Alternativen gibt es zu sindresorhus/execa?

Open-Source-Alternativen zu sindresorhus/execa sind unter anderem: shelljs/shelljs — ShellJS is a Node.js shell command library that provides a portable Unix-like utility suite for cross-platform system… gam-team/gam — GAM is a command-line tool for administering Google Workspace and Cloud Identity. It translates command-line arguments… elves/elvish — Elvish is a shell that combines interactive command-line use with a structured scripting language, designed to make… rstacruz/cheatsheets — This project is a comprehensive collection of web development reference guides and technical cheat sheets. It provides… oils-for-unix/oils — Oils is a Unix shell interpreter and scripting language runtime that combines a modern shell language with POSIX and… kilo-org/kilocode — Kilocode is an autonomous engineering platform designed to orchestrate AI agents for complex software development…

Open-Source-Alternativen zu Execa

Ähnliche Open-Source-Projekte, sortiert nach der Anzahl der gemeinsamen Funktionen mit Execa.
  • shelljs/shelljsAvatar von shelljs

    shelljs/shelljs

    14,402Auf GitHub ansehen↗

    ShellJS is a Node.js shell command library that provides a portable Unix-like utility suite for cross-platform system automation. It serves as a cross-platform filesystem API and a process wrapper for spawning and controlling external system subprocesses. The project translates Unix shell commands into equivalent operations for the host operating system, allowing scripts to run consistently across different platforms. It supports the registration of custom commands and the integration of third-party plugins to extend its portable shell capabilities. The library covers broad capability areas

    JavaScriptbashjavascriptnode
    Auf GitHub ansehen↗14,402
  • gam-team/gamAvatar von GAM-team

    GAM-team/GAM

    4,206Auf GitHub ansehen↗

    GAM is a command-line tool for administering Google Workspace and Cloud Identity. It translates command-line arguments into structured API calls, enabling administrators to manage users, groups, organizational units, and domain settings across a Google Workspace environment. The tool handles authentication through OAuth2 flows, service accounts, and workload identity federation, and supports multi-tenant configurations for managing multiple domains or cloud projects from a single installation. GAM distinguishes itself through its batch processing and automation capabilities. It can process la

    Pythongamgooglegoogle-admin-sdk
    Auf GitHub ansehen↗4,206
  • elves/elvishAvatar von elves

    elves/elvish

    6,325Auf GitHub ansehen↗

    Elvish is a shell that combines interactive command-line use with a structured scripting language, designed to make both everyday terminal work and automation tasks more predictable and readable. It parses, compiles, and executes code in three phases, catching syntax and variable errors before any code runs, and it aborts execution on command failure by default to prevent silent errors. The shell introduces value-oriented pipelines that pass structured data like lists, maps, and closures between commands, preserving types without serialization. It also mixes traditional byte streams with thes

    Gogoprogramming-languageshell
    Auf GitHub ansehen↗6,325
  • rstacruz/cheatsheetsAvatar von rstacruz

    rstacruz/cheatsheets

    14,429Auf GitHub ansehen↗

    This project is a comprehensive collection of web development reference guides and technical cheat sheets. It provides a curated set of markdown-based documentation designed to help developers quickly locate syntax patterns and API examples for common web technologies and programming languages. The repository serves as a specialized reference library covering several distinct technical domains. It includes extensive guides for CSS, focusing on selectors, Flexbox, Grid, and responsive layout properties, as well as a DevOps command reference for Docker, Kubernetes, AWS, Ansible, and general she

    SCSS
    Auf GitHub ansehen↗14,429
Alle 30 Alternativen zu Execa anzeigen→