Node - check existence of command in path Node - check existence of command in path node.js node.js

Node - check existence of command in path


Personally I have found that the command-exists module on npm works great.

Installation

npm install command-exists

Usage

  • async

    var commandExists = require('command-exists');commandExists('ls', function(err, commandExists) {    if(commandExists) {        // proceed confidently knowing this command is available    }});
  • promise

    var commandExists = require('command-exists');// invoked without a callback, it returns a promisecommandExists('ls').then(function(command){    // proceed}).catch(function(){    // command doesn't exist});
  • sync

    var commandExistsSync = require('command-exists').sync;// returns true/false; doesn't throwif (commandExistsSync('ls')) {    // proceed} else {    // ...}


You could use whereis in Linux, and where in Windows, to see if the executable can be found

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);});


DON'T use child_process just for that, neither packages which use child_process internally. As Matt already answered, the most straightforward way is just checking under your Path.

Here is a NPM lookpath package which scans your $PATH or $Path.

const { lookpath } = require('lookpath');const p = await lookpath('bash');// "/bin/bash"

This is a Node.js port of exec.LookPath from Go.

Hope it helps