节点 – 检查path中是否存在命令

我有一个独特的问题,我需要使用Node来遍历几个Unix风格的命令,看看它们是否存在于Windows安装path中。

例如,Windows本身不支持ls 。 但是,假设有人安装了git并检查包含Unix命令,它会的。

我需要知道ls和其他命令是否在系统path

现在,我正在使用child_process在每个命令上运行help 。 然后我检查运行它的响应。 这是混乱和危险的。 我不想从节点运行30个任意命令:

 var spawnSync = require('child_process').spawnSync; var out = spawnSync('ls', ['/?'], {encoding: 'utf8'}); 

我还可以检查这些命令的存在吗?

您可以使用Linux中的whereis以及Windows中的whereis来查看是否可以find可执行文件

 var isWin = require('os').platform().indexOf('win') > -1; var where = isWin ? 'where' : 'whereis'; var spawn = require('child_process').spawn; var out = spawn(where + ' ls', ['/?'], {encoding: 'utf8'}); out.on('close', function (code) { console.log('exit code : ' + code); }); 

你不能检查你的path目录,看看是否存在ls命令文件。

如果这些文件不存在于目录中,那么它不在path中。