DUICUO

オープンソース化されるや否や、たちまち話題に!このGoogleスクリプトツールは大ヒット間違いなしです。

Bashが非常に便利であることは誰もが知っていますが、スクリプトを書く際には、JavaScriptなどのより便利なプログラミング言語を選択することが多いです。しかし、Node.jsライブラリは使用前に多くの追加操作が必要であり、全体的には十分ではありません。最近、Googleは開発者がスクリプトを迅速に作成するのに役立つツール「ZX」をオープンソース化し、わずか数日でGitHubのホットリストのトップに躍り出ました。

ZX のインストールは非常に簡単です。

  1. npm i -g zx

次に、`await` をトップレベルで使用できるように、.mjs 拡張子のファイルにスクリプトを記述する必要があります。.js 拡張子を使用する場合は、スクリプトを `void async function () {...}()` で囲むことができます。

zx スクリプトの先頭に次のシェバンを追加します。

  1. #!/usr/bin/env zx

これで、次のようにスクリプトを実行できるようになります。

  1. chmod +x ./script.mjs  
  2. ./script.mjs

あるいは、zx 実行ファイル経由で:

  1. zx ./script.mjs

よく使われるコマンドの例

`child_process` パッケージで提供される `exec` 関数を使用すると、文字列をコマンドとして実行し、`Promise<ProcessOutput>` オブジェクトを返すことができます。

  1. count = parseInt ($`ls -1 | wc -l` を待機)  
  2. console.log(`ファイル数: ${count}`)

たとえば、ファイルを並列にアップロードするには、次のようにします。

  1. ホストを [...]とします。  
  2. Promise.all(hosts.map(ホスト= >を待機します。    
  3. $`rsync -azP ./src ${host}:/var/www`  
  4. ))

実行されたプログラムがゼロ以外の終了コードを返す場合、ProcessOutput オブジェクトがスローされます。

  1. 試す {  
  2. $`exit 1` を待つ 
  3. } キャッチ (p) {  
  4. console.log(`終了コード: ${p.exitCode}`)  
  5. console.log(`エラー: ${p.stderr}`)  
  6. }

プロセス出力

  1. クラス ProcessOutput {  
  2. 読み取り専用終了コード: 数値 
  3. 読み取り専用標準出力: 文字列 
  4. 読み取り専用stderr: 文字列 
  5. toString(): 文字列 
  6. }

cd()は現在の作業ディレクトリを変更する

  1. cd('/tmp')  
  2. await $`pwd` // 出力は /tmp

fetch() は node-fetch パッケージのラッパーです。

  1. resp = await fetch('http://wttr.in') を実行します。  
  2. if (resp.ok) {  
  3. console.log(応答テキスト()を待つ)  
  4. }

`question()` は `readline` パッケージのラッパーです:

  1. タイプQuestionOptions = { 選択肢: 文字列[] }  
  2. 関数 question(query?: string, options?: QuestionOptions): Promise < string >  

使用法:

  1. let username = await question('ユーザー名は何ですか? ')  
  2. let token = await question('環境変数を選択してください: ', {
  3. 選択肢: Object.keys(process.env)
  4. })

sleep() は setTimeout 関数のラッパーです。

  1. 関数 sleep(ms: number): Promise < void >  

使用法:

  1. スリープを待つ(1000)

Chalk パッケージは、内部スクリプトをインポートしなくてもすぐに使用できます。

  1. console.log(chalk.blue('Hello world!'))

リモート スクリプトを実行します。zx 実行可能ファイルのパラメータが https:// で始まる場合、ファイルがダウンロードされ、実行されます。

  1. console.log(chalk.blue('Hello world!'))

最後に、GitHub 上の ZX プロジェクト アドレスは次のとおりです: https://github.com/google/zx