Maison >interface Web >js tutoriel >Cet article explique comment utiliser la bibliothèque zx pour écrire des scripts Shell dans Nodejs.

Cet article explique comment utiliser la bibliothèque zx pour écrire des scripts Shell dans Nodejs.

青灯夜游
青灯夜游avant
2022-01-19 19:42:233574parcourir

Comment écrire un script Shell dans Node ? L'article suivant vous expliquera comment utiliser la bibliothèque zx pour écrire des scripts Shell dans Node. J'espère qu'il vous sera utile !

Cet article explique comment utiliser la bibliothèque zx pour écrire des scripts Shell dans Nodejs.

Script Shell

Créer un script shell, c'est-à-dire un script exécuté par un shell, tel que Bash ou zsh, est une méthode courante utilisée pour automatiser les tâches répétitives, en particulier pour le personnel d'exploitation et de maintenance. . Pour les ingénieurs front-end, utiliser Node.js pour écrire des scripts shell est un bon choix car il fournit de nombreux modules de base et peut importer d'autres bibliothèques de scripts front-end, réduisant ainsi les coûts d'apprentissage.

Si vous souhaitez essayer d'écrire un script shell qui s'exécute sous Node.js sans utiliser zx.js, vous constaterez peut-être que ce n'est pas aussi fluide que vous l'espérez. Vous devez écrire une gestion spéciale pour le processus enfant, prendre soin d'échapper aux paramètres de ligne de commande, puis utiliser la sortie standard stdout et l'erreur standard stderr, ce n'est pas particulièrement intuitif , et utiliser des scripts shell pour écrire des variables Très maladroit. zx.js 想尝试编写一个在 Node.js 下运行的 shell 脚本,可能会发现它并不像希望的那样流畅。需要为子进程编写特殊处理,注意转义命令行参数,然后使用标准输出 stdout 和标准错误 stderr,它不是特别直观,并且使用 shell 脚本编写变得非常笨拙。

Bash shell 脚本语言是编写 shell 脚本的最佳选择,不需要编写代码来处理子进程,并且它具有用于处理 stdoutstderr 的内置语言特性。但是用Bash编写 shell 脚本也不是那么容易,语法可能相当混乱,使得实现逻辑或处理提示用户输入之类的事情变得不那么方便。

Google 的 zx.js 库有助于使用 Node.js 高效且愉快地编写 shell 脚本。

官方网站:https://github.com/google/zx#-zx

安装

对于前端工程师来说,安装一个依赖是家常便饭,运行以下脚本:

npm install zx

使用

Google 的 zx.js 提供了封装子进程的创建以及从这些进程处理 stdoutstderr 的函数。下面将使用的主要函数是 $ 函数,使用 zx.js  规定脚本写入扩展名为 .mjs 的文件中,以便能够在顶层使用 await。如果习惯于 .js 扩展名,请将脚本包装在类似 void async function () {...}() 中。

下面先来使用扩展名 .mjs,每个 .mjs 文件都将以下代码作为开头:

#! /usr/bin/env node

下面就来实现一个 shell 脚本中 ls 的功能,创建文件 ls.mjs ,完整代码如下:

#! /usr/bin/env node

import { $ } from "zx";
$.verbose = false;
const output = (await $`ls`).stdout.trim();
console.log(output);

shell 脚本文件一样,需要将其转为可执行文件:

chmod +x ./ls.mjs

下面就来执行这个 Node.js 编写的 shell 脚本,执行:

./ls.mjs

Cet article explique comment utiliser la bibliothèque zx pour écrire des scripts Shell dans Nodejs.

Google 的  zx.js  还提供了其他实用函数来简化 shell 脚本编写,例如:

cd():允许更改当前的工作目录question():Node.js 的 readline 模块的包装器,可以直接提示用户输入。

#! /usr/bin/env node

import { $, cd } from "zx";
$.verbose = false; // 默认为true,以详细模式运行
const output = (await $`ls`).stdout.trim();
console.log(output);

const dirName = "zx-mkdir-tmp";
await $`mkdir ${dirName}`; // 创建目录

cd(`./${dirName}`);
const pwdOutput = (await $`pwd`).stdout.trim();
console.log(pwdOutput); // zx-mkdir-tmp

除了 zx.js 提供的实用功能外,它还提供了几个流行的脚本库,例如:

  • chalk:允许为脚本的输出添加颜色。
  • minimist:解析命令行参数的库,将它们暴露在 argv 对象下。
  • fetch:可以使用它来发出 HTTP 请求。
  • fs-extra:公开了 Node.js 核心 fs
  • Le langage de script shell Bash est le meilleur choix pour écrire des scripts shell, pas besoin d'écrire du code pour gérer les processus enfants, et il possède des fonctionnalités pour gérer stdout et Fonctionnalités de langage intégrées de stderr . Mais écrire des scripts shell dans Bash n'est pas si simple, et la syntaxe peut être assez déroutante, ce qui rend peu pratique l'implémentation d'une logique ou la gestion de choses comme l'invite à saisir l'utilisateur.

La bibliothèque zx.js de Google permet d'écrire des scripts shell de manière efficace et agréable en utilisant Node.js.

🎜Site officiel : https://github.com/google/zx#-zx🎜🎜🎜🎜Installation🎜🎜🎜🎜Pour les ingénieurs front-end, installer une dépendance est monnaie courante, exécutez le script suivant :🎜rrreee🎜🎜🎜 Utilisez 🎜🎜🎜🎜Le zx.js de Google fournit des fonctions qui encapsulent la création de processus enfants et gèrent stdout et stderr à partir de ces processus. La fonction principale qui sera utilisée ci-dessous est la fonction $. Utilisez zx.js pour spécifier que le script est écrit dans un fichier avec l'extension .mjs<.> afin qu'il puisse utiliser <code>await au niveau supérieur. Si vous êtes habitué à l'extension .js, enveloppez votre script dans quelque chose comme void async function () {...}(). 🎜🎜Utilisons d'abord l'extension .mjs Chaque fichier .mjs commencera par le code suivant : 🎜rrreee🎜Implémentons un shell. la fonction de ls dans le script crée le fichier ls.mjs Le code complet est le suivant : 🎜rrreee🎜C'est le même que le shell fichier de script et nécessite Convertissez-le en fichier exécutable : 🎜rrreee🎜 Exécutons ce script <code>shell écrit en Node.js. Exécutez : 🎜rrreee🎜Cet article explique comment utiliser la bibliothèque zx pour écrire des scripts Shell dans Nodejs.🎜🎜Le zx.js de Google fournit également d'autres fonctionnalités Fonctions pour simplifier les scripts shell, par exemple : 🎜🎜cd() : permet de changer le répertoire de travail actuel question() : un wrapper pour le module readline de Node.js , qui peut demander directement à l'utilisateur une saisie. 🎜rrreee🎜En plus des fonctions pratiques fournies par zx.js, il fournit également plusieurs bibliothèques de scripts populaires, telles que : 🎜

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer