Un linguaggio davvero universale
Con l'ascesa di Node.js, Javascript (e recentemente Typescript) è diventato un linguaggio di spicco per scrivere tutti i tipi di script diversi. Grazie alle librerie principali incluse in ogni istanza Node.js, gli sviluppatori hanno anche accesso a varie chiamate al sistema operativo. La flessibilità di Javascript (sebbene con un costo di manutenzione più difficile) combinata con quel potente motore di runtime ha aiutato a ottenere un ampio footprint negli attuali ambienti server. Per le macchine UNIX, questo significa che Javascript convive con i ben consolidati script Bash, che sono supportati nativamente dal sistema operativo.
Ma cosa succede se...
Ma cosa accadrebbe se potessi chiamare direttamente i comandi Bash all'interno dei tuoi script Node.js? Potresti voler usare Javascript per la maggior parte delle implementazioni, ma hai l'obbligo di usare Bash qua e là per raggiungere un obiettivo.
Con uno degli ultimi progetti di Google, uno strumento CLI chiamato semplicemente "zx", è ora disponibile una tale libreria. La cosa migliore: puoi usarlo subito. Tutto ciò di cui hai bisogno è un'istanza Node.js installata uguale o successiva alla versione 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.
Usando il simbolo del dollaro come operatore seguito da due backtick che includono il tuo codice Bash, puoi effettuare chiamate effettive come in uno script Bash.
E se installi "zx" come dipendenza globale, puoi chiamare i tuoi file Javascript allo stesso modo dei tuoi script Bash.
Altro da esplorare
Questo articolo mira solo a fornire un'introduzione al pacchetto. Per ulteriori informazioni, controlla i collegamenti nell'addendum per esplorare completamente l'API e tutte le funzionalità supportate da "zx".