Google ZX: scripts de shell con Javascript

Cómo escribir scripts de shell con Javascript y Node.js

Un idioma verdaderamente universal

Con el surgimiento de Node.js, Javascript (y recientemente, Typescript), se ha convertido en un lenguaje prominente para escribir todo tipo de scripts diferentes. Gracias a las bibliotecas centrales incluidas con cada instancia de Node.js, los desarrolladores también tienen acceso a varias llamadas al sistema operativo. La flexibilidad de Javascript (aunque con un costo de mantenimiento más difícil) combinada con ese poderoso motor de tiempo de ejecución lo ayudó a ganar una gran huella en los entornos de servidor actuales. Para las máquinas UNIX, esto significa que Javascript convive con los scripts Bash bien establecidos, que son compatibles de forma nativa con el sistema operativo.

Pero que si…

Pero, ¿qué pasaría si pudieras llamar directamente a los comandos Bash dentro de tus scripts Node.js? Es posible que desee usar Javascript para la mayoría de las implementaciones, pero tiene el requisito de usar Bash aquí y allá para lograr un objetivo.

Con uno de los últimos proyectos de Google, una herramienta CLI llamada simplemente "zx", ya está disponible una biblioteca de este tipo. Lo mejor de todo: puedes usarlo de inmediato. Todo lo que necesita es una instancia de Node.js instalada que sea igual o superior a la versión 14.

// Your JS-file. You can either use
// the .js-suffix or the alternative
// .mjs-suffix, which allows the global
// usage of 'await' when used with 'zx'.

// The nessary shebang, as in Bash-scripts
#!/usr/bin/env zx

// A simple demonstration on how to
// call Bash-command inside your JS.
// Here, we log the current working directory.
await $`echo $PWD`;
// Now to call your file, you can 
// simply use 'npx', the node package
// executor that comes with NPM.

npx zx ./demo.mjs

// For more examples, check out the 
// repo where Google provides some
// more real-world use cases.

Al usar el signo de dólar como operador seguido de dos comillas invertidas que incluyen su código Bash, puede realizar llamadas reales como en un script Bash.

Y si instala "zx" como una dependencia global, puede llamar a sus archivos Javascript de la misma forma que a sus scripts Bash.

Más para explorar

Este artículo solo tiene como objetivo dar una introducción al paquete. Para obtener más información, consulte los enlaces en el apéndice para explorar completamente la API y todas las funciones que admite "zx".