Ejecuta múltiples commands de shell de forma síncrona en Node

Tengo un código de trabajo que hace exactamente lo que quiero, pero no estoy contento con el método que he usado porque no se escala bien.

Supongamos que queremos ejecutar 4 commands, uno después del otro, para clonar un repository y get un lanzamiento en una carpeta local:

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

¿Hay alguna manera de ejecutar de forma limpia varios commands y hacerlo más escalable sin agregar más a la cadena de commands original con el && para unirlos?

hay muchas cosas que podrías hacer el más simple sería usar execSync , y ejecutar un command uno después del otro.

como necesitas commands para ejecutar uno u otro, esa sería la solución con la que iría.

si quieres mantenerte en un patrón asíncrono, utiliza un control-flow-lib como step o async .

incluso podría promisificar al ejecutivo con un lib como bluebird .

todo depende de las preferences de encoding personal y la tarea que necesita hacer.