首頁  >  文章  >  web前端  >  一文聊聊在Nodejs中怎麼用 zx函式庫 寫 Shell 腳本

一文聊聊在Nodejs中怎麼用 zx函式庫 寫 Shell 腳本

青灯夜游
青灯夜游轉載
2022-01-19 19:42:233480瀏覽

Node中如何寫Shell腳本?以下這篇文章跟大家介紹一下使用zx函式庫在Node中寫Shell腳本的方法,希望對大家有幫助!

一文聊聊在Nodejs中怎麼用 zx函式庫 寫 Shell 腳本

Shell 腳本

#建立一個shell 腳本,也就是一個由shell 執行的腳本,例如Bash或zsh,是用來實現自動化重複任務的常見方法,特別是對於維運人員最熟悉了。對於前端工程師來說使用 Node.js 編寫 shell 腳本是個不錯的選擇,因為它提供了許多核心模組,並且可以導入前端其他的腳本庫,降低學習成本。

如果不借助 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

一文聊聊在Nodejs中怎麼用 zx函式庫 寫 Shell 腳本

#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 模組,以及許多其他方法,可以更輕鬆地使用檔案系統。
  • 更多node相關知識,請造訪:
nodejs 教學

! !

以上是一文聊聊在Nodejs中怎麼用 zx函式庫 寫 Shell 腳本的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.cn。如有侵權,請聯絡admin@php.cn刪除