zx脚本工具

1. ZX介绍

zx是一个脚本工具, 可以帮助开发者轻松的编写脚本, 主要有以下优势:

  • 使用js书写脚本
  • 可以利用丰富的js库

2. 代码演练

example.mjs


// 调用shell命令
try {
  const projectName = await $`jq -r '.name' < package.json`
  echo`1. projectName: ${projectName}`
} catch (e) {
  const { stderr, exitCode } = e
  console.error({ stderr, exitCode })
}

// 打印: console/echo
const date = await $`date`
console.log(`2. Current date is ${date.stdout.trim()}.`)
echo`3. Current date is ${date}.`
const echoResult = await $`echo 4. Current date is ${date}.` // 调用shell中的echo如果不获取结果,在脚本输出结果中看不到
echo`${echoResult}`

// 批量操作
const batchResult = await Promise.all([$`sleep 1; echo 1`, $`sleep 2; echo 2`, $`sleep 3; echo 3`])
for (const result of batchResult) {
  echo`batch result: ${result}`
}

// 系统
echo`home目录: ${os.homedir()}`
echo`日志目录: ${path.resolve(path.join(os.homedir(), 'tmp', 'output.log'))}`
echo`当前目录: ${__dirname}`

[!note] 第三行的引用实则未必, 但是在写脚本时候可以提供很多类型感知防止写错; 另外如果脚本依赖第三方包也是需要在前面引用的.

结果输出:

1. projectName: albedo-services
2. Current date is Wed Apr 10 15:03:36 CST 2024.
3. Current date is Wed Apr 10 15:03:36 CST 2024.
4. Current date is Wed Apr 10 15:03:36 CST 2024.
console.log 红色
console.log 红色 template
echo 红色
echo 红色 template
batch result: 1
batch result: 2
batch result: 3
home目录: /Users/wangjian
日志目录: /Users/wangjian/tmp/output.log
当前目录: /Users/wangjian/github/vd/albedo-services/tmp/zxshell

3. 执行方式

  • 可执行文件执行

    # 增加可执行权限
    chmod +x example.mjs
    # 执行
    ./example.mjs
    

    [!note]

    确保shebang已配置, zx的shengbang是: #!/usr/bin/env zx

  • zx执行

    # 安装 zx, 使用npm
    npm install -g zx
    
    # 执行
    zx ./example.mjs
    

4. 学习更多

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章