[google/zx] Google 開源套件 zx 讓你用 JavaScript 寫 Shell Scripts

Tags
Tools
Date
Jan 8, 2022
 
notion image

前言:

Google 於2021年五月新開源的專案,短短半年間在 GitHub 上就獲得超過 24k 顆星。也是 2021年最熱門的 JS 專案,參考自:2021 JavaScript Rising Stars
 
先來看一下官方是怎麼介紹 zx 工具的:
A tool for writing better scripts
Bash is great, but when it comes to writing scripts, people usually choose a more convenient programming language. JavaScript is a perfect choice, but standard Node.js library requires additional hassle before using. The zx package provides useful wrappers around child_process, escapes arguments and gives sensible defaults.
 
zx tool 簡介:使用 JavaScript 的方式去寫 Shell Scripts,天呀,JavaScript 真的是無所不在了,前端、後端、跨平台、寫 Shell Scripts 通通都行,如果你想要用 TypeScript 來寫當然也是可以的。
  • 2021/5 開源
  • Requirement Node.js >= 14.13.1
不過其實 zx tool 也不是第一個提出用 JS 寫 shell scripts 的專案,類似的 Node.js 套件目前至少就有:
  • 由 Heroku 開源的oclif 套件 (目前我是用這一套)
❤️
zx 相較於其他工具,給我的初步的印象是前置作業更少,寫起來更輕鬆。
 

zx 的 Hashbang

Hashbang (又稱 Shebang) 是一個由井號 # 和驚嘆號 ! 構成的字元序列,作為 Scripting language 的第一行,其用途就是用來指出你這個文件中的程式碼預期要用什麽直譯器指令去運行它。
像是以前在寫 Shell Scripts 開頭會使用 sh, 而 zx 的 Hashbang 則是
#!/usr/bin/env zx
  • 備註:常見的 Hashbang
    • #!/bin/sh —使用sh
    • #!/usr/bin/python -O—使用具有代碼最佳化的Python執行
    • #!/bin/csh—使用csh,即C shell執行
    • #!/usr/bin/php—使用PHP的命令列直譯器執行
 

zx 常用的 Utility Functions

cd()

Changes the current working directory.

fetch()

A wrapper around the node-fetch package.
  • Fetch API 在 Node.js 的實作套件,讓我們可以發出 HTTP 請求。

question()

A wrapper around the readline package.

sleep()

A wrapper around the setTimeout function.
await sleep(1000)

Reference:

Loading Comments...