Javascript 同步子进程调用Node.js 0.10.x中的shell脚本(包括CLI)
正在开发的Node.js版本中的同步子进程调用(即不稳定)。这对于编写shell脚本来说是一个好消息,因为它将允许这样的代码:Javascript 同步子进程调用Node.js 0.10.x中的shell脚本(包括CLI),javascript,node.js,shell,popen,command-line-interface,Javascript,Node.js,Shell,Popen,Command Line Interface,正在开发的Node.js版本中的同步子进程调用(即不稳定)。这对于编写shell脚本来说是一个好消息,因为它将允许这样的代码: var history = child_process.execSync('git log', { encoding: 'utf8' }); process.stdout.write(history); 但是,对于针对Node.js(v0.10.30)当前稳定版本的代码,同步子进程调用是通过外部库进行的。最流行的两个这样的库似乎是和 对于打算与v0.10.x一起使用的
var history = child_process.execSync('git log', { encoding: 'utf8' });
process.stdout.write(history);
但是,对于针对Node.js(v0.10.30)当前稳定版本的代码,同步子进程调用是通过外部库进行的。最流行的两个这样的库似乎是和
对于打算与v0.10.x一起使用的shell脚本,它们必须调用二进制文件或其他可执行文件并处理其输出,这两个库或其他类似库的相对优缺点是什么?如果合适,请提供代码示例进行说明。让我们看看三个选项:问题中提到的两个选项,以及
shelljs
不仅仅是一个调用子进程的库。基本上,它是几个POSIX实用程序和shell内置程序的跨平台JavaScript实现:
,cat
,cd
,chmod
,cp
,dirs
,echo
,env
,exec
,exit
,find
,grep
,ln,ls
,mkdir
,mv
,popd
,pushd
,pwd
,rm
,sed
,test
,which
。它还提供了自己的两个有用函数:error()
和tempdir()
它的exec
函数可用于同步运行外部可执行文件
语法示例
使用全局命名空间:
require('shelljs/global');
var version = exec('node --version', {silent:true}).output;
console.log('version ' + version);
var sh = require('shelljs');
var version = sh.exec('node --version', {silent:true}).output;
console.log('version ' + version);
或者,使用本地命名空间:
require('shelljs/global');
var version = exec('node --version', {silent:true}).output;
console.log('version ' + version);
var sh = require('shelljs');
var version = sh.exec('node --version', {silent:true}).output;
console.log('version ' + version);
关键统计数据/规格
- 依赖项:0
- 家属:411
- 本月下载:957851
- 许可证:BSD*
- 没有依赖关系
- 可由开发人员自行决定通过全局或本地命名空间使用
- 大量依赖软件包和用户,因此可能会在使用一段时间
- 无法区分被调用的可执行文件对stderr的输出和对stdout的输出李>
- shelljs文档中提到,“对于长寿命的进程,最好异步运行exec(),因为当前的同步实现使用了大量CPU。这应该很快得到解决。”
ExcScCo库由一个围绕C++核心的JavaScript包装器组成。在安装ExcSeCc期间,C++核心被编译成一个合适的NoDEJS二进制模块平台。 语法示例 关键统计数据/规格
- 依赖关系:1
- 家属:91
- 本月下载:20525
- 执照:麻省理工学院
- 一旦安装,就很简单
- 大量依赖软件包和用户,因此可能会在使用一段时间
- 不是无依赖性的
- 无法区分被调用的可执行文件对stderr的输出和对stdout的输出李>
类似ExcScReC,ExcSeCc库由一个围绕C++核心的JavaScript包装器组成。在安装ExcSeCc期间,C++核心被编译成一个合适的NoDEJS二进制模块平台。 语法示例 关键统计数据/规格
- 依赖项:0
- 家属:3人
- 本月下载:20233
- 许可证:纽约证券交易所
- 没有依赖关系
- 内部拼写不一致
- 文档是日文的(不可否认,这对每个人来说都是一个“骗局”)
- 无法区分被调用可执行文件对stderr的输出和对stdout的输出
- 少量依赖项,因此在Node.js社区中可能不太根深蒂固