Heim > Web-Frontend > js-Tutorial > In diesem Artikel geht es um die Verwendung der zx-Bibliothek zum Schreiben von Shell-Skripten in Nodejs

In diesem Artikel geht es um die Verwendung der zx-Bibliothek zum Schreiben von Shell-Skripten in Nodejs

青灯夜游
Freigeben: 2022-01-19 19:42:23
nach vorne
3608 Leute haben es durchsucht

Wie schreibe ich ein Shell-Skript in Node? Im folgenden Artikel erfahren Sie, wie Sie mit der zx-Bibliothek Shell-Skripte in Node schreiben.

In diesem Artikel geht es um die Verwendung der zx-Bibliothek zum Schreiben von Shell-Skripten in Nodejs

Shell-Skript

Das Erstellen eines Shell-Skripts, also eines Skripts, das von einer Shell wie Bash oder zsh ausgeführt wird, ist eine gängige Methode zur Automatisierung wiederkehrender Aufgaben, insbesondere für Betriebs- und Wartungspersonal . . Für Front-End-Ingenieure ist die Verwendung von Node.js zum Schreiben von Shell-Skripten eine gute Wahl, da es viele Kernmodule bereitstellt und andere Front-End-Skriptbibliotheken importieren kann, wodurch die Lernkosten gesenkt werden.

Wenn Sie versuchen möchten, ein Shell-Skript zu schreiben, das unter Node.js ausgeführt wird, ohne zx.js zu verwenden, werden Sie möglicherweise feststellen, dass es nicht so reibungslos funktioniert, wie Sie es sich erhoffen. Sie müssen eine spezielle Behandlung für den untergeordneten Prozess schreiben, darauf achten, die Befehlszeilenparameter zu maskieren und dann die Standardausgabe stdout und die Standardfehlerausgabe stderr verwenden. Dies ist nicht besonders intuitiv , und Shell-Skripte zum Schreiben von Variablen verwenden Sehr umständlich. 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
Nach dem Login kopieren

使用

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

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

#! /usr/bin/env node
Nach dem Login kopieren

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

#! /usr/bin/env node

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

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

chmod +x ./ls.mjs
Nach dem Login kopieren

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

./ls.mjs
Nach dem Login kopieren

In diesem Artikel geht es um die Verwendung der zx-Bibliothek zum Schreiben von Shell-Skripten in 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
Nach dem Login kopieren

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

  • chalk:允许为脚本的输出添加颜色。
  • minimist:解析命令行参数的库,将它们暴露在 argv 对象下。
  • fetch:可以使用它来发出 HTTP 请求。
  • fs-extra:公开了 Node.js 核心 fs
  • Die Bash-Shell-Skriptsprache ist die beste Wahl zum Schreiben von Shell-Skripten. Es ist nicht erforderlich, Code für die Verarbeitung untergeordneter Prozesse zu schreiben, und sie verfügt über Funktionen für die Verarbeitung von stdout und Die integrierten Sprachfunktionen von stderr . Aber das Schreiben von Shell-Skripten in Bash ist nicht so einfach, und die Syntax kann ziemlich verwirrend sein, was es unpraktisch macht, Logik zu implementieren oder Dinge wie die Aufforderung zur Benutzereingabe zu handhaben.

Die zx.js-Bibliothek von Google hilft beim effizienten und reibungslosen Schreiben von Shell-Skripten mit Node.js.

🎜Offizielle Website: https://github.com/google/zx#-zx🎜🎜🎜🎜Installation🎜🎜🎜🎜Für Front-End-Ingenieure ist die Installation einer Abhängigkeit üblich. Führen Sie das folgende Skript aus:🎜rrreee🎜🎜🎜 Verwenden Sie 🎜🎜🎜🎜Googles zx.js bietet Funktionen, die die Erstellung von untergeordneten Prozessen kapseln und stdout und stderr aus diesen Prozessen verarbeiten. Die Hauptfunktion, die im Folgenden verwendet wird, ist die Funktion $. Verwenden Sie zx.js, um anzugeben, dass das Skript in eine Datei mit der Erweiterung .mjs, damit es <code>await auf der obersten Ebene verwenden kann. Wenn Sie an die Erweiterung .js gewöhnt sind, packen Sie Ihr Skript in etwas wie void async function () {...}() ein. 🎜🎜Lassen Sie uns zunächst die Erweiterung .mjs verwenden. Jede .mjs-Datei beginnt mit dem folgenden Code: 🎜rrreee🎜Lassen Sie uns eine Shell implementieren Funktion von <code>ls im Skript erstellt die Datei ls. Der vollständige Code lautet wie folgt: 🎜rrreee🎜Es ist derselbe wie die Shell Skriptdatei und erfordert die Konvertierung in eine ausführbare Datei: 🎜rrreee🎜 Lassen Sie uns dieses in Node.js geschriebene Shell-Skript ausführen. Ausführen: 🎜rrreee🎜In diesem Artikel geht es um die Verwendung der zx-Bibliothek zum Schreiben von Shell-Skripten in Nodejs🎜🎜Googles zx.js bietet auch andere nützliche Funktionen Features Funktionen zur Vereinfachung des Shell-Scriptings, zum Beispiel: 🎜🎜cd(): Ermöglicht das Ändern des aktuellen Arbeitsverzeichnisses question(): Ein Wrapper für das Readline-Modul von Node.js , wodurch der Benutzer direkt zur Eingabe aufgefordert werden kann. 🎜rrreee🎜Zusätzlich zu den praktischen Funktionen, die zx.js bietet, bietet es auch mehrere beliebte Skriptbibliotheken, wie zum Beispiel: 🎜

Das obige ist der detaillierte Inhalt vonIn diesem Artikel geht es um die Verwendung der zx-Bibliothek zum Schreiben von Shell-Skripten in Nodejs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:juejin.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage