zx - Ein Werkzeug für einfachere Konsolen-Scripte in Node.js

Bash-Scripte sind schnell geschrieben, allerdings erschwert die gewöhnungsbedürftige Syntax es, komplexere Skripte zu schreiben. JavaScript ist eigentlich eine perfekte, um Scripte zu schreiben (was das Script im Namen ja bereits andeutet), aber die Verwendung der Node.js-Standardbibliothek ist leider nicht intuitiv. Das zx-Paket, das als Open-Source von Google bereitgestellt wird, stellt nützliche Wrapper für child_process bereit und liefert darüber hinaus einiges an sinvollen Funktionen.

zx kann über npm i -g zx global installiert werden, einzige Vorausetztung ist ein installiertes Node/NPM.

Hier ein einfaches Beispiel-Script:

#!/usr/bin/env zx
await $`cat package.json | grep name`

let branch = await $`git branch --show-current`
await $`dep deploy --branch=${branch}`

await Promise.all([
    $`sleep 1; echo 1`,
    $`sleep 2; echo 2`,
    $`sleep 3; echo 3`,
])

let name = 'foo bar'
await $`mkdir /tmp/${name}`

Es werden folgende Befehle bereitgestellt:
  • $ - Führt angegbenen Befehl über spawn aus
  • cd()
  • fetch()
  • question()
  • sleep() 
  • echo()
  • stdin()
  • within()
  • retry()
  • spinner()- Rendert einen Spinner/Ladeanimation auf der Konsole
  • chalk - Ermöglicht farbige Ausgaben auf der Konsole
  • fs 
  • os 
  • path 
  • glob
  • yaml - Ermöglicht das einlesen von YAML
  • minimist - Einfaches parsen von Argumenten
  • which 
  • filename 
  • dirname 
  • require()

Mehr zu zx unter github.com/google/zx

Kommentar schreiben: