Node.js 执行系统命令:child_process 与 shelljs 实战指南

作者:岩茶

时间:2026-10-25

浏览:338

本文介绍在 Node.js 中执行系统命令的两种主流方案。首先详解原生 child_process 模块中的 exec、execFile、fork 及其同步版本,涵盖异步回调与阻塞处理。其次介绍 npm 包 shelljs 的安装与用法,通过同步与异步两种方式演示如何执行 git 等命令并判断执行状态,为前端工程化提供实用参考。

文章目录

引言

在前端工程化的开发流程中,开发者常需在 JavaScript 脚本里调用 node、npm 或其他 shell 命令。本文将详细阐述两种在 node 环境中调用 shell 命令的具体方法。

引言

一、Node.js 原生模块:child_process

Node.js 原生 API 介绍:child_process.exec() 方法用于衍生一个 shell 进程并在其中运行指定命令,命令执行完毕后,通过回调函数将标准输出(stdout)和标准错误(stderr)返回。

child_process.execFile() 方法与 类似,但其主要区别在于默认情况下它直接衍生目标命令,而不先启动 shell 进程。

child_process.fork() 方法用于衍生一个新的 Node.js 进程,并利用建立的 IPC(进程间通信)通道调用指定的模块,该通道允许父子进程之间相互发送消息。

child_process.execSync() 是 的同步版本,执行时会阻塞 Node.js 的事件循环,直到命令执行完毕。

child_process.execFileSync() 是 的同步版本,同样会阻塞 Node.js 的事件循环,直至命令完成。

使用示例

const process = require("child_process");
// 执行 npm run build 命令
;(function() {
  process.exec('npm run build', (error, stdout, stderr) => {
    if (!error) {
      // 成功
    } else {
      // 失败
    }
  });
})();

二、npm 第三方库:shelljs

  • 安装方法
npm i -D shelljs
  • 使用示例
const shell = require('shelljs');
// 同步
// 执行 git status 命令
const { code } = shell.exec('git status');
/*
* 返回一个对象
* 可以根据 code 值来判断当前命令是否执行成功
* code === 0 代表成功
* */
// 异步回调
// 执行 git add . 命令
shell.exec('git add .', function(code, stdout, stderr) {
  console.log('Exit code:', code);
  console.log('Program output:', stdout);
  console.log('Program stderr:', stderr);
  if (code===0) {
    console.log('成功')
    // do something
  }
});

参考文档:

http://nodejs.cn/api/child_process.html

https://www.npmjs.com/package/shelljs

以上即为 Node.js 执行 cmd 或 shell 命令的详细介绍,更多关于 Node.js 执行 cmd 和 shell 命令的资料,敬请关注本站后续发布的其他相关文章!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章