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. 學習更多

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