Écrire des scripts shell en Node.js avec Google ZX

Image illustrant l'article : Écrire des scripts shell en Node.js avec Google ZX

Écrire des scripts shell en Node.js avec Google ZX

par Korben -

Si vous faites des scripts en bash, déjà ça veut dire que vous êtes une belle personne. Mais ça veut également dire que Google pense à vous.

En effet, cette petite entreprise qui un jour sera connue dans le monde entier, j’en suis sûr, a mis en ligne sur son Github un outil qui s’appelle ZX et qui permet d’écrire des scripts beaucoup plus simplement et beaucoup plus rapidement.

Reposant sur NodeJS, ZX ne perdra pas tous ceux qui sont déjà familiers avec JavaScript et Node.js. ZX a la particularité de faciliter la création de child_process et la gestion des messages sortants (stdout et stderr).

Prenons un exemple type hello world qui va utiliser la commande “ls” pour lister les fichiers d’un répertoire et récupérer la sortie de cette commande.

On va d’abord créer un répertoire :

mkdir hello cd hello

Puis on va initialiser un nouveau projet dans le dossier :

npm init --yes

Ensuite, pour installer zx, il faudra passer par npm comme ceci :

npm install --save-dev zx

On va ensuite créer un script avec l’extension .mjs

nano hello.mjs

Dont voici le code… En gros, on initialise le shebang et y’a plus qu’à utiliser les fonctions de récupération des commandes comme elles sont décrites dans la documentation.

Ainsi, on importe la fonction $ (shell) et on lui passe la commande ls. On récupère la sortie (stdout) de ls dans la variable output et on affiche cette variable.

#! /usr/bin/env node import { $ } from "zx"; const output = (await $`ls`).stdout; console.log(output); 

ZX est une façon agréable de faire des scripts bash avec NodeJS sans trop se prendre la tête. Vous pouvez même mixer ça avec de la doc en markdown pour exécuter le contenu “code” contenu dans un fichier .md.

Évidemment, je vous recommande lire la doc pour aller au-delà de mon petit exemple.

Ah et en bonus, pour les Patreons, je vous ai même fait un tuto en vidéo.


Merci de votre soutien !