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