Vere universala lingvo
Kun la apero de Node.js, Ĝavaskripto (kaj lastatempe Tajpskribo) fariĝis elstara lingvo por verki ĉiajn diversajn skriptojn. Danke al la kernaj bibliotekoj inkluzivitaj kun ĉiu Node.js-kazo, programistoj ankaŭ havas aliron al diversaj alvokoj al la Mastruma Sistemo. La fleksebleco de Ĝavaskripto (kvankam kun kosto de pli malfacila prizorgado) kombinita kun tiu potenca rultempa motoro helpis ĝin akiri grandan spuron en aktualaj servilaj medioj. Por UNIX-maŝinoj, ĉi tio signifas, ke Ĝavaskripto loĝas kune kun la bone establitaj Bash-skriptoj, kiuj estas denaske subtenataj de la Operaciumo.
Sed kio se ...
Sed se vi povus rekte voki Bash-komandojn ene de viaj Node.js-skriptoj? Vi eble volas uzi Ĝavaskripton por plej multaj efektivigoj, sed havas la postulon uzi Bash ĉi tie kaj tie por plenumi celon.
Kun unu el la plej novaj projektoj de Google, CLI-ilo simple nomata "zx", tia biblioteko nun haveblas. Plej bone: vi povas uzi ĝin tuj. Vi bezonas nur instalitan ekzemplon de Node.js egalan aŭ pli altan al versio 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.
Uzante la dolarsignon kiel funkciigisto sekvita de du malantaŭaj tikloj, kiuj inkluzivas vian Bash-kodon, vi povas realigi vokojn kiel en Bash-skripto.
Kaj se vi instalas "zx" kiel tutmondan dependecon, vi povas nomi viajn Ĝavaskriptajn dosierojn same kiel viaj Bash-skriptoj.
Pli esplori
Ĉi tiu artikolo nur celas doni enkondukon en la pakaĵon. Por pliaj informoj, rigardu la ligojn en la aldono por plene esplori la API kaj ĉiujn funkciojn "zx" subtenas.