如何使用node.js响应命令行提示符

时间:2014-04-22 02:37:48

标签: node.js express stdout stdin command-line-interface

如何使用node.js以编程方式响应命令行提示符?例如,如果我执行process.stdin.write('sudo ls');命令行将提示输入密码。是否有“提示?”的事件

另外,我如何知道process.stdin.write('npm install')之类的内容何时完成?

我想用它来进行文件编辑(需要暂存我的应用程序),部署到我的服务器,并反转那些文件编辑(最终部署到生产所需)。

任何帮助都会摇滚!

1 个答案:

答案 0 :(得分:3)

您希望使用child_process.exec()来执行此操作,而不是将命令写入stdin

var sys = require('sys'),
    exec = require('child_process').exec;

// execute the 'sudo ls' command with a callback function
exec('sudo ls', function(error, stdout, stderr){
  if (!error) {
    // print the output
    sys.puts(stdout);
  } else {
    // handle error
  }
});

对于npm install,您最好使用child_process.spawn(),这样可以在流程退出时附加一个事件监听器来运行。您可以执行以下操作:

var spawn = require('child_process').spawn;

// run 'npm' command with argument 'install'
//   storing the process in variable npmInstall
var npmInstall = spawn('npm', ['install'], {
  cwd: process.cwd(),
  stdio: 'inherit'
});

// listen for the 'exit' event
//   which fires when the process exits
npmInstall.on('exit', function(code, signal) {
  if (code === 0) {
    // process completed successfully
  } else {
    // handle error
  }
});