sindresorhusexeca:更易用的 Node.js 进程执行工具

sindresorhus/execa:更易用的 Node.js 进程执行工具

execa 在 GitHub 上已经拿到 7.5k Star 了。 这个工具基于 Node.js 原生 child_process 模块封装,专门优化程序执行场景的使用体验。

1、这玩意儿是干嘛的

它在脚本、应用或者库中运行命令,针对编程场景做了优化,没有原生模块的使用门槛。

2、为什么要用它

用原生 child_process 执行命令会遇到很多问题:参数需要转义,shell 注入风险,Windows 兼容性差,错误信息不明确,输出处理麻烦。不同场景还要写不同的处理逻辑,复用成本高。 execa 把这些问题都做了封装,不管是简单的命令执行还是复杂的流处理,都提供统一的 API,不用再处理底层细节。

3、核心特性

  • 支持 Promise 和模板字符串语法,和 zx 使用体验类似
  • 不需要转义或者引号,没有 shell 注入风险
  • 可以直接执行本地安装的二进制文件,不用加 npx
  • 优化 Windows 系统支持,包括 shebang、PATHEXT 识别、优雅终止等
  • 提供详细错误信息、verbose 模式和自定义日志,方便调试
  • 支持多个子进程管道连接,可以获取中间结果,支持多源输入和多目的地输出
  • 输出可以自动分割为文本行,支持逐行迭代处理
  • 支持几乎所有输入类型:文件、字符串、Uint8Array、可迭代对象、流等
  • 支持父子进程之间消息交换
  • 保证子进程在当前进程意外退出时也能正常终止

4、安装使用教程

安装:

bash 复制代码
npm install execa

简单使用示例:

javascript 复制代码
import {execa} from 'execa';

const {stdout} = await execa`npm run build`;
// 打印命令输出
console.log(stdout);

脚本模式:

javascript 复制代码
import {$} from 'execa';

const {stdout: name} = await $`cat package.json`.pipe`grep name`;
console.log(name);

const branch = await $`git branch --show-current`;
await $`dep deploy --branch=${branch}`;

执行本地二进制:

javascript 复制代码
await execa({preferLocal: true})`eslint`;

管道多个子进程:

javascript 复制代码
const {stdout} = await execa`npm run build`
  .pipe`sort`
  .pipe`head -n 2`;
console.log(stdout);

5、适合哪些人用

  • 开发 Node.js 脚本,需要频繁执行系统命令的开发者
  • 构建工具、CI/CD 流程的开发者,需要处理命令执行和输出
  • 需要做进程间通信、流处理的 Node.js 应用开发者
  • 希望简化命令执行逻辑,降低代码维护成本的团队

开源地址:github.com/sindresorhu...

相关推荐
午安~婉1 天前
GitHub Token/ GitHub Stats统计显示图异常
前端·github·vercel·github token
dong_junshuai1 天前
每天一个开源项目#59 AirLLM:27.6K星,3.72GB显存跑2.8T模型
人工智能·程序员·github
lpfasd1231 天前
2026年第31周GitHub趋势周报
github
Jul1en_1 天前
【Claude Code Compact】源码级别的学习上下文压缩
java·前端·学习·github·ai编程
逛逛GitHub1 天前
Karpathy 刚发了一个帖子,怎么判断一个新模型到底行不行?
github
m4Rk_1 天前
【论文阅读】Agent 记忆机制(28):MEM1——将记忆压缩融入推理,实现近似恒定上下文的长程智能体
论文阅读·人工智能·学习·开源·github
逛逛GitHub1 天前
盘点 17 个 7 月份 GitHub 上夯夯夯的开源项目。
github
在水一缸1 天前
从“反向技能“到协作革命:当开源重新定义AI编程助手
开源·github·ai编程·开发者工具·ai编程助手·ai协作·claude cowork
用户526835677901 天前
存储运维实战:基于 Ceph Event 监听与 Python 适配器的分布式存储健康度物理声光响应架构
github
dong_junshuai1 天前
每天一个开源项目#58 DwarfStar:2万星原生引擎,让DeepSeek V4跑在Mac上
github