我試圖創建一個Node腳本來詢問用戶幾個問題,保存輸入並使用答案運行mvn archetype:generate
命令來安裝他們的環境。NodeJS:在運行時爲用戶輸入child_process
我得到了我得到Maven命令運行的位置。但是,當Maven要求用戶輸入諸如groupId
這樣的值並且``我可以輸入值時,給出一個[enter]
,這就是它停止的地方。
它不需要輸入和處理它們。它所做的只是像CLI那樣顯示它,但不接受它們。
這裏的代碼與用戶輸入預填充值的片段:
var spawn = require('child_process').spawn;
var answerCollection = {
"name": "nameOfMyArchetype", //answer of inquiry
"version": "1.2.3.4" //answer of inquiry
};
var cmd = "mvn";
var args = [
"archetype:generate",
"-DarchetypeArtifactId=" + answerCollection.name,
"-DarchetypeGroupId=com.backbase.expert.tools",
"-DarchetypeVersion=" + answerCollection.version
];
var runCmd = function(cmd, args, callback) {
var child = spawn(cmd, args);
child.stdin.pipe(process.stdin);
child.stdout.pipe(process.stdout);
child.stdout.on('end', function(res) {
console.log("stdout:end");
callback(res);
});
child.stderr.on('data', function(text) {
console.log("stderr:data");
console.log(data);
});
child.stderr.on('exit', function(data) {
console.log("stderr:exit");
console.log(data);
});
};
到目前爲止,我已經試過上面的代碼與child_process
和spawn = require('child_process').spawn('bash')
。
問題:有沒有其他的方法來確保我可以觸發一個腳本,如果返回時有提示並要求輸入,我可以輸入並且腳本會繼續?