创建一个 shell 脚本——一个由诸如 Bash 或 zsh 之类的 shell 执行的脚本——可以是自动化重复任务的好方法。Node.js 似乎是编写 shell 脚本的理想选择,因为它为我们提供了许多核心模块,并允许我们导入我们选择的任何库。它还使我们能够访问 JavaScript 提供的语言特性和内置函数。
Google 的 zx库有助于使用 Node.js 高效且愉快地编写 shell 脚本。
Google ZX是谷歌公司推出的一种快速、高效、可靠的JavaScript构建工具。它可以帮助开发人员在编写和构建现代Web应用程序时提高开发效率和代码质量。本文将介绍Google ZX的主要特点、优点以及使用方法。
Google ZX的主要特点
Google ZX是一个基于Node.js的构建工具,它具有以下主要特点:
- 简单易用:Google ZX使用简单易懂的API和命令行工具,可以帮助开发人员快速构建和部署Web应用程序。
- 高效性:Google ZX采用了多进程构建技术,可以快速、高效地构建大型Web应用程序。
- 可靠性:Google ZX具有强大的错误处理和调试功能,可以帮助开发人员快速发现和解决问题。
- 可扩展性:Google ZX可以与其他工具和框架集成,可以方便地扩展和定制。
使用Google ZX的方法
要使用Google ZX,您需要先安装Node.js。然后,在命令行中运行以下命令来安装Google ZX:
npm install -g zx
安装完成后,您可以使用Google ZX构建和运行JavaScript代码。例如,以下命令将运行一个名为script.js的JavaScript文件:
zx script.js
除此之外,Google ZX还提供了许多其他命令和API,可以帮助开发人员构建和部署Web应用程序。
#!/usr/bin/env zx
// 获取package.json中的name
await $`cat package.json | grep name`
// git 的调用
let branch = await $`git branch --show-current`
await $`dep deploy --branch=${branch}`
await Promise.all([
$`sleep 1; echo 1`,
$`sleep 2; echo 2`,
$`sleep 3; echo 3`,
])
// 生成文件夹
let name = 'foo bar'
await $`mkdir /tmp/${name}`
使用
在扩展名为.mjs的文件中编写脚本,以便在顶层使用await。如果您更喜欢.js扩展,请将脚本包装为类似void async函数(){…}()的格式。
添加到zx脚本的开头:
#!/usr/bin/env zx
demo:
#!/bin/sh
set -e
cd `dirname $0` && cd ../
package_version() {
echo $(cat package.json | awk '/"version"/ {print}' | awk 'BEGIN {FS="""} /"version"/ {print $4}')
}
CURRENT_VERSION=$(package_version)
echo "当前版本号:$CURRENT_VERSION"
# 上传
npx tal-oss upload --uploadFrom=dist --uploadTo=$CURRENT_VERSION --config=tal-oss.config.json
echo "已上传"
# git tag
git tag $CURRENT_VERSION
git push origin $CURRENT_VERSION
使用zx:
#!/usr/bin/env zx
cd(`dirname $0`)
cd(`../`)
const packageVersion = JSON.parse(await readFile('package.json')).version
console.log(`当前版本号:${packageVersion}`)
// 上传
await $`npx tal-oss upload --uploadFrom=dist --uploadTo=${packageVersion} --config=tal-oss.config.json`
console.log('已上传')
// git tag
await $`git tag ${packageVersion}`
await $`git push origin ${packageVersion}`