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