Skip to content

zx

全局安装 zx

sh
npm i -g zx

将你的脚本写在一个以.mjs扩展名结尾的文件中,以便在顶层使用 await。 所有函数($,cd,fetch 等)都可以直接使用,无需任何导入。

js
#!/usr/bin/env zx

await $`cat package.json | grep name`

或者显式导入全局变量(以便在 VS Code 中获得更好的自动完成)。

js
import 'zx/globals'

执行脚本

sh
zx ./script.mjs

执行远程脚本

如果 zx 执行文件的参数以 https:// 开头,则会下载该文件并执行。

sh
zx https://medv.io/game-of-life.js

可以将一些通用的脚本方在静态服务上,供团队使用

Markdown 脚本

zx 可以执行以 markdown 格式编写的脚本

sh
zx docs/markdown.md
js
await $`whoami`
await $`echo ${__dirname}`

__filename将指向 markdown.md

js
console.log(chalk.yellowBright(__filename))

我们也可以在这里使用导入:

js
await import('chalk')

bash 代码(使用bashsh语言标记)也将被执行, 其他代码块将被忽略:

bash
VAR=$(date)
echo "$VAR" | wc -c

通过 --install 安装依赖

js
// script.mjs:
import sh from 'tinysh'

sh.say('Hello, world!')

在 zx 命令中添加 --install 标志以自动安装缺少的依赖项。

sh
zx --install script.mjs

您还可以通过在导入后添加 @ 注释来指定所需的版本。

js
import sh from 'tinysh' // @^1

在远程主机上执行命令

zx 使用 webpod 在远程主机上执行命令。

js
import { ssh } from 'zx'

await ssh('user@host')`echo Hello, world!`