A tool for writing better scripts
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.
Built and signed on
GitHub Actions
Add Package
deno add jsr:@webpod/zx
Import symbol
import * as zx from "@webpod/zx";
Import directly with a jsr specifier
import * as zx from "jsr:@webpod/zx";
Add Package
pnpm i jsr:@webpod/zx
pnpm dlx jsr add @webpod/zx
Import symbol
import * as zx from "@webpod/zx";
Add Package
yarn add jsr:@webpod/zx
yarn dlx jsr add @webpod/zx
Import symbol
import * as zx from "@webpod/zx";
Add Package
vlt install jsr:@webpod/zx
Import symbol
import * as zx from "@webpod/zx";
Add Package
npx jsr add @webpod/zx
Import symbol
import * as zx from "@webpod/zx";
Add Package
bunx jsr add @webpod/zx
Import symbol
import * as zx from "@webpod/zx";