Maison >interface Web >js tutoriel >Comment écrire des scripts de shell dans le nœud avec la bibliothèque ZX de Google

Comment écrire des scripts de shell dans le nœud avec la bibliothèque ZX de Google

Lisa Kudrow
Lisa Kudroworiginal
2025-02-09 09:59:12947parcourir

Cet article explore la bibliothèque ZX de Google, un outil puissant pour rationaliser le script shell dans les projets Node.js. Nous allons créer un utilitaire de ligne de commande pour bootstrap de nouveaux projets Node.js, présentant les capacités de ZX.

How to Write Shell Scripts in Node with Google's zx Library

Avantages clés du zx:

de Google
  • simplifie le script shell dans node.js en utilisant la syntaxe JavaScript familière.
  • gère efficacement la création de processus enfants, STDOUT et STDERR.
  • fournit des utilitaires utiles comme $ (pour l'exécution des commandes), cd(), question(), et l'accès aux bibliothèques populaires (par exemple, chalk, minimist, fetch, fs-extra).
  • favorise les meilleures pratiques: l'utilisation des modules ECMascript et la gestion locale de dépendance.
  • Compatibilité de typeScript (avec des ajustements de configuration mineurs).

Le défi des scripts de coquille traditionnels:

Les scripts de coquille traditionnels (bash, zsh) peuvent être lourds. La gestion des processus enfants, l'échappement des arguments et la gestion de STDOUT / STDERR ajoutent de la complexité. Bien que Bash propose des fonctionnalités intégrées, sa syntaxe peut être moins intuitive pour une logique complexe ou une gestion des entrées utilisateur. Node.js, tout en offrant des modules de base et une flexibilité de JavaScript, nécessite une gestion manuelle du processus des enfants, ce qui le rend moins simple.

ZX de Google: une solution:

ZX résout élégamment ces problèmes. Il enveloppe la gestion des processus enfants et rationalise la manipulation des E / S.

Prérequis:

  • Connaissances de base JavaScript et Node.js.
  • Connaissance du commandement terminal.
  • Node.js & gt; = v14.13.1.

Le code complet est disponible sur github.

Comment fonctionne ZX:

La fonction centrale est $. Par exemple:

<code class="language-javascript">import { $ } from "zx";

await $`ls`;</code>

Cela exécute ls et capture la sortie. ZX utilise des littéraux de modèle étiquetés pour une syntaxe propre. D'autres fonctions utiles incluent cd() pour modifier les répertoires et question() pour l'entrée utilisateur. Il intègre également des bibliothèques populaires comme chalk (pour la sortie colorée) et minimist (pour l'analyse d'argument en ligne de commande).

Bonjour le monde avec zx:

  1. Créer un projet: mkdir zx-project && cd zx-project && npm init -y
  2. installer zx: npm install --save-dev zx
  3. Créer 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>
  1. le rendre exécutable: chmod u x hello.mjs
  2. Run: ./hello.mjs

zx avec TypeScript:

TypeScript nécessite un tsconfig.json (par exemple, "compilerOptions": {"target": "es2017", "module": "commonjs"}) et envelopper await dans un iife:

<code class="language-javascript">import { $ } from "zx";

await $`ls`;</code>

Construire un bootstrapper de projet:

Créons un outil (bootstrap-tool.mjs) qui automatise la configuration du projet:

  1. Importer les modules nécessaires: import { $, argv, cd, chalk, fs, question } from "zx"; import path from "path"; import which from "which";
  2. Fonction de gestion des erreurs: function exitWithError(msg) { console.error(chalk.red(msg)); process.exit(1); }
  3. Vérifiez les programmes requis (git, node, npx): async function checkRequiredProgramsExist(programs) { ... }
  4. Handle --directory Argument: Vérifiez s'il existe et est un répertoire valide, alors cd().
  5. Vérifiez les paramètres globaux GIT (
  6. , user.name). user.email
  7. Initialiser Git:
  8. git init await $ ;
  9. générer
  10. (en utilisant package.json), invite pour le système de module (npm init -y ou commonjs) et mettre à jour module. package.json
  11. invite et installer des packages NPM (avec validation).
  12. Générer des fichiers de configuration (
  13. , EditorConfig, plus joli, eslint) en utilisant .gitignore et npx gitignore. npx mrm
  14. Générer un Readme.md.
  15. commettre des modifications à Git.
  16. Ce bootstrapper complet rationalise considérablement l'initialisation du projet. D'autres améliorations pourraient inclure la création automatique des répertoires, les fonctionnalités du projet open source (Licence, Contributeur Covenant) et l'automatisation du référentiel GitHub.

Questions fréquemment posées (FAQ):

La section FAQ fournie est déjà complète et bien écrite. Aucun changement n'est nécessaire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn