2015-08-26 6 views
1

У меня есть рабочий код, который делает именно то, что я хочу, но я недоволен используемым мной методом, потому что он не масштабируется хорошо.Выполнять несколько команд оболочки синхронно в узле

Скажем, я хочу, чтобы выполнить 4 команды, один за другим, чтобы клонировать репозиторий и оформить льготу локальную папку:

//shell command 
var cmd = "cd /Users/xxxx/Documents/DESIGN" + 
      " && git clone https://github.com/xxxx/xxxx.git testing" + 
      " && cd testing" + 
      " && git checkout 4.0"; 

//execute shell command 
var exec = require("child_process").exec; 
exec(cmd, function(err, stdout, stderr){ 
    if (err) console.log(err); 
    console.log(stdout); 
}); 

Есть ли способ, чтобы аккуратно выполнить несколько команд и сделать это более масштабируемо, не добавляя больше к исходной командной строке с &&, чтобы присоединиться к ним?

ответ

0

есть много вещей, которые вы могли бы сделать. самым простым было бы использовать execSync и выполнять одну команду друг за другом.

так как вам нужны команды для выполнения одного из другого, это было бы решением, с которым я бы пошел.

Если вы хотите придерживаться асинхронного шаблона, используйте управляющий поток-lib, например step или async.

вы могли бы даже промизировать exec с помощью lib, как bluebird.

все зависит от предпочтений персонального кодирования и задачи, которую необходимо выполнить.

Смежные вопросы