如何使用node.js以编程方式响应命令行提示符?例如,如果我执行process.stdin.write('sudo ls');
命令行将提示输入密码。是否有“提示?”的事件
另外,我如何知道process.stdin.write('npm install')
之类的内容何时完成?
我想用它来进行文件编辑(需要暂存我的应用程序),部署到我的服务器,并反转那些文件编辑(最终部署到生产所需)。
任何帮助都会摇滚!
答案 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
}
});