Heim >Web-Frontend >js-Tutorial >So schreiben Sie Shell -Skripte im Knoten mit der ZX -Bibliothek von Google.
In diesem Artikel wird die ZX -Bibliothek von Google untersucht, ein leistungsstarkes Tool zum Straffung von Shell -Skripten innerhalb von Node.js -Projekten. Wir erstellen ein Befehlszeilen-Dienstprogramm, um neue Node.js-Projekte zu starten und die Funktionen von ZX zu präsentieren.
wichtige Vorteile von Googles ZX:
$
(für die Befehlsausführung), cd()
, question()
und der Zugriff auf beliebte Bibliotheken (z. B. chalk
, minimist
, fetch
, fs-extra
). 🎜>
Die Herausforderung des herkömmlichen Shell -Skripts:
traditionelles Shell -Skript (Bash, ZSH) kann umständlich sein. Verwaltung von untergeordneten Prozessen, dem Entkommen von Argumenten und dem Umgang mit Stdout/Stderr erhöht Komplexität. Während Bash integrierte Funktionen bietet, kann seine Syntax für komplexe Logik- oder Benutzereingabedehandelung weniger intuitiv sein. Node.js bietet zwar Kernmodule und Flexibilität von JavaScript, erfordert das manuelle kindliche Prozessmanagement, was es weniger einfach macht.
Google's ZX: Eine Lösung:
ZX löst diese Probleme elegant. Es wickelt das kindliche Prozessmanagement und rationalisiert die E/O -Handhabung.
Voraussetzungen:
Wie ZX funktioniert:
Die Kernfunktion lautet. Zum Beispiel: $
<code class="language-javascript">import { $ } from "zx"; await $`ls`;</code>Dies führt
aus und erfasst die Ausgabe. ZX verwendet markierte Template -Literale für eine saubere Syntax. Weitere nützliche Funktionen sind ls
für das Ändern von Verzeichnissen und cd()
für die Benutzereingabe. Es integriert auch beliebte Bibliotheken wie question()
(für farbige Ausgabe) und chalk
(für das Analyse des Befehlszeilenarguments). minimist
Hallo Welt mit ZX:
mkdir zx-project && cd zx-project && npm init -y
npm install --save-dev zx
hello.mjs
<code class="language-javascript">#! /usr/bin/env node import { $ } from "zx"; $.verbose = false; // Suppress command echoing const output = (await $`ls`).stdout.trim(); // Trim extra newline console.log(output);</code>
chmod u x hello.mjs
./hello.mjs
ZX mit TypeScript:
TypeScript erfordert ein tsconfig.json
(z. B. "compilerOptions": {"target": "es2017", "module": "commonjs"}
) und ein Wickeln await
in einem iife:
<code class="language-javascript">import { $ } from "zx"; await $`ls`;</code>
Erstellen eines Projektbootstrappers:
Erstellen wir ein Tool (bootstrap-tool.mjs
), das das Projekt -Setup automatisiert:
import { $, argv, cd, chalk, fs, question } from "zx"; import path from "path"; import which from "which";
function exitWithError(msg) { console.error(chalk.red(msg)); process.exit(1); }
git
, node
, npx
): async function checkRequiredProgramsExist(programs) { ... }
--directory
Argument: Überprüfen Sie, ob es existiert und ein gültiges Verzeichnis ist, dann cd()
in es. user.name
, user.email
). await $
Git init ;
package.json
(mit npm init -y
), fordert das Modulsystem (commonjs
oder module
) auf und aktualisieren Sie package.json
. .gitignore
, EditorConfig, schöner, Eslint) mit npx gitignore
und npx mrm
Dieser umfassende Bootstrapper optimiert die Projektinitialisierung erheblich. Weitere Verbesserungen können automatische Verzeichniserstellung, Open-Source-Projektfunktionen (Lizenz, Mitwirkender Covenant) und Github-Repository-Automatisierung sein.
häufig gestellte Fragen (FAQs):
Der vorgesehene FAQS-Abschnitt ist bereits umfassend und gut geschrieben. Es sind keine Änderungen erforderlich.
Das obige ist der detaillierte Inhalt vonSo schreiben Sie Shell -Skripte im Knoten mit der ZX -Bibliothek von Google.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!