コンテンツにスキップ

Zx

出典: フリー教科書『ウィキブックス(Wikibooks)』

Zxチュートリアル

[編集]

Zxとは

[編集]

Zxは、Google製のNode.jsベースのスクリプティングライブラリで、シェルスクリプトのような簡潔さとJavaScriptの柔軟性を組み合わせたツールです。

インストール

[編集]

npmを使用してグローバルにインストール:

npm install -g zx

基本的な使用方法

[編集]

スクリプトの作成

[編集]

拡張子を.mjsとして、ファイルの先頭に特殊なシバン(shebang)を追加:

#!/usr/bin/env zx

// JavaScriptコードを記述
await $`echo "Hello, Zx!"`

実行権限の付与

[編集]

スクリプトに実行権限を付与:

chmod +x script.mjs

主な機能

[編集]

コマンド実行

[編集]

バッククォート構文でシェルコマンドを直接実行:

await $`ls -la`
await $`git status`

変数展開

[編集]

JavaScriptの変数をコマンドに埋め込み:

const folder = 'documents'
await $`mkdir -p ${folder}`

パイプラインとリダイレクト

[編集]

シェルと同様のパイプライン処理:

await $`cat file.txt | grep "error"`
await $`echo "log" > output.log`

エラーハンドリング

[編集]

コマンド実行のエラーを捕捉:

try {
  await $`command-that-might-fail`
} catch (p) {
  console.log(`Exit code: ${p.exitCode}`)
  console.log(`Error: ${p.stderr}`)
}

並列実行

[編集]

複数のコマンドを並列に実行:

await Promise.all([
  $`sleep 2 && echo "Task 1"`,
  $`sleep 1 && echo "Task 2"`
])

実践的な例

[編集]

Webプロジェクトのデプロイメントスクリプト

[編集]
#!/usr/bin/env zx

const branch = 'main'
const remote = 'origin'

await $`git checkout ${branch}`
await $`git pull ${remote} ${branch}`
await $`npm run build`
await $`rsync -avz dist/ user@server:/path/to/deploy`

ファイル処理

[編集]
const files = await glob('./src/**/*.js')
for (const file of files) {
  await $`prettier --write ${file}`
}

注意点

[編集]
  • Node.js 16以降が必要
  • 複雑なスクリプトには適さない
  • 基本的なシェル操作に最適

関連リソース

[編集]

まとめ

[編集]

Zxは、シェルスクリプトの簡潔さとJavaScriptの柔軟性を融合させた、モダンなスクリプティングツールです。