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の柔軟性を融合させた、モダンなスクリプティングツールです。