我正在尝试在节点中重新复制shelljs exec类型执行

问题描述

我以前曾经用shelljs调用过这样的命令:

require('shelljs/global');

let res = exec('echo hello').stdout

但是我想在不依赖shelljs的情况下在节点中实现这一点。 问题是我发现了node的示例,但是我遇到了很多麻烦。 感谢您的帮助

解决方法

最简单的答案是使用synchronousexec版本。该命令不会在命令运行时显示stdout,结果将不会具有shelljs提供的出色属性,仅包含stdout数据

const { execSync } = require('child_process')
const exec = (cmd) => execSync(cmd).toString()
const res = exec('echo "hello there"')

完整的shelljs实现在exec.js中,该脚本通过exec-child.js脚本运行命令以启用实时输出+捕获到同步exec的变量。这取决于您需要的解决方案的复杂程度。