Google ZX - scripts shell avec Javascript

Comment écrire des scripts shell avec Javascript et Node.js

Un langage vraiment universel

Avec la montée en puissance de Node.js, Javascript (et récemment Typescript) est devenu un langage de premier plan pour écrire toutes sortes de scripts différents. Grâce aux bibliothèques de base incluses avec chaque instance Node.js, les développeurs ont également accès à divers appels au système d'exploitation. La flexibilité de Javascript (bien qu'avec un coût de maintenance plus élevé) combinée à ce puissant moteur d'exécution lui a permis d'acquérir une large empreinte dans les environnements de serveurs actuels. Pour les machines UNIX, cela signifie que Javascript cohabite avec les scripts Bash bien établis, qui sont pris en charge nativement par le système d'exploitation.

Mais si…

Mais que se passerait-il si vous pouviez appeler directement des commandes Bash à l'intérieur de vos scripts Node.js ? Vous pouvez utiliser Javascript pour la plupart des implémentations, mais devez utiliser Bash ici et là pour atteindre un objectif.

Avec l'un des derniers projets de Google, un outil CLI simplement appelé "zx", une telle bibliothèque est désormais disponible. Le meilleur de tous : vous pouvez l'utiliser tout de suite. Tout ce dont vous avez besoin est une instance Node.js installée égale ou supérieure à la version 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.

En utilisant le signe dollar comme opérateur suivi de deux backticks qui incluent votre code Bash, vous pouvez passer des appels réels comme dans un script Bash.

Et si vous installez "zx" en tant que dépendance globale, vous pouvez appeler vos fichiers Javascript de la même manière que vos scripts Bash.

Plus à explorer

Cet article vise uniquement à donner une introduction au package. Pour plus d'informations, consultez les liens dans l'addendum pour explorer pleinement l'API et toutes les fonctionnalités prises en charge par « zx ».