google/zx
#280 this week
A tool for writing better scripts
45.7K stars
1.3K forks
45.7K GitHub watchers
Updated 9/8/2026
Build with Backblaze B2
SDKs, agent skills, IDE extensions, and reference pipelines from Backblaze Labs. All open source.
Loading star history...
Use Cases & Benefits
- Provides a JavaScript-based tool for writing and running shell scripts with improved syntax and cross-platform support.
- Simplifies complex scripting by wrapping child process execution with argument escaping and sensible defaults in JavaScript.
- Use for automating shell commands in Node.js projects with cleaner, more readable code than traditional bash scripts.
- Use for running parallel asynchronous shell commands easily within JavaScript using Promise-based syntax.
- Use for cross-platform script development compatible with Linux, macOS, Windows, and multiple JavaScript runtimes.
About zx
zx
#!/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
npm 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
License
Disclaimer: This is not an officially supported Google product.
Discover Repositories
Search across tracked repositories by name or description