Zx
A tool for writing better scripts
Bash is great, but when it comes to writing more complex scripts, many people prefer a more convenient programming language. JavaScript is a perfect choice, but the Node.js standard library requires additional hassle before using. No compromise, take the best of both. The `zx` package provides useful cross-platform wrappers around `child_process`, escapes arguments and gives sensible defaults. The project is written primarily in JavaScript, distributed under the Apache License 2.0 license, first published in 2021. It has gained significant community traction with 45,535 stars and 1,268 forks on GitHub. Key topics include: bash, child-process, cli, exec, javascript.
js#!/usr/bin/env zx await $`cat package.json | grep name` const branch = await $`git branch --show-current` await $`dep deploy --branch=${branch}` await Promise.all([ $`sleep 1; echo 1`, $`sleep 2; echo 2`, $`sleep 3; echo 3`, ]) const name = 'foo bar' await $`mkdir /tmp/${name}`
Bash is great, but when it comes to writing more complex scripts,
many people prefer a more convenient programming language.
JavaScript is a perfect choice, but the Node.js standard library
requires additional hassle before using. No compromise, take the best of both. The zx package provides
useful cross-platform wrappers around child_process, escapes arguments and
gives sensible defaults.
Install
bashnpm install zx
All setup options: zx/setup.
See also zx@lite.
Usage
Compatibility
- Linux, macOS, or Windows
- JavaScript Runtime:
- Node.js >= 12.17.0
- Bun >= 1.0.0
- Deno 1.x, 2.x
- GraalVM Node.js
- Some kind of bash or PowerShell
- Both CJS or ESM modules in JS or TS
See also
- 🔥 crow.watch — a computing-focused community, link aggregation and discussion, join.
License
Disclaimer: This is not an officially supported Google product.
Contributors
Showing top 12 contributors by commit count.
