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.mdjs
await $`whoami`
await $`echo ${__dirname}`__filename将指向 markdown.md:
js
console.log(chalk.yellowBright(__filename))我们也可以在这里使用导入:
js
await import('chalk')bash 代码(使用bash或sh语言标记)也将被执行, 其他代码块将被忽略:
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!`