Skip to content

execa

工具说明 && demo

  • This package improves child_process methods with
  • 对 child_process 改进了方法
  • execa 是一个用于执行外部进程的 Node.js 模块,它提供了比 Node.js 内置的 child_process 模块更简单和强大的 API。通过 execa,你可以方便地执行外部命令,并获取输出、错误信息以及其他相关信息。
javascript
import { $, execa } from "execa";

const { stdout: branch } = await $`git branch --show-current`;
console.log(branch); // main 获取到分支名称

await execa("echo", ["zijieyuan output"]).pipeStdout("stdout.txt"); // 打印输出到stdout.txt文件中

const { stdout } = await execa("ls", ["-l", "-a"]);
console.log(stdout); // 输出当前目录下的所有文件和文件夹

同类型工具

工具库描述
execa用于执行外部进程的 Node.js 模块,提供简单和强大的 API
child_processNode.js 自带的模块,用于创建子进程并执行外部命令
shelljs用于在 Node.js 中执行 shell 命令的模块,提供简洁的 API
cross-spawn跨平台的子进程管理工具,可以在 Node.js 中安全地执行命令
node-cmd简单的 Node.js 模块,用于执行 shell 命令
npm-run用于在 Node.js 中执行 npm 脚本的模块,方便运行 package.json 中定义的脚本命令
spawn-command简单的 Node.js 模块,用于执行 shell 命令,并提供了一些额外的功能
shell-exec轻量级的模块,用于在 Node.js 中执行 shell 命令,支持异步和同步执行
  • 原理都是调用 child_process 来实现命令调用
javascript
// child_process
const { exec } = require("child_process");

exec("ls -l", (error, stdout, stderr) => {
  if (error) {
    console.error(`exec error: ${error}`);
    return;
  }
  console.log(`stdout: ${stdout}`);
  console.error(`stderr: ${stderr}`);
});
javascript
// shelljs

const shell = require("shelljs");

shell.cp("-R", "source/dir", "dest/dir");
javascript
// cross-spawn
const crossSpawn = require("cross-spawn");

const ls = crossSpawn.sync("ls", ["-lh", "/usr"]);
console.log("stdout here: \n", ls.stdout.toString());
javascript
// node-cmd

const cmd = require("node-cmd");

cmd.get("ls -lh", function (err, data, stderr) {
  console.log("the current working dir is : ", data);
});
javascript
// npm-run

const npmRun = require("npm-run");

npmRun.exec("start", function (err, stdout, stderr) {
  console.log(stdout);
});
javascript
// spawn-command

const spawnCommand = require("spawn-command");

const command = spawnCommand("ls -lh");
command.on("error", (err) => {
  console.error("Failed to start subprocess.", err);
});
command.stdout.on("data", (data) => {
  console.log(`stdout: ${data}`);
});
javascript
// shell-exec

const shellExec = require("shell-exec");

(async () => {
  const result = await shellExec("ls -lh");
  console.log(result);
})();

Released under the MIT License.