一经开源就爆了!谷歌这个脚本工具注定要火

开源最前线(ID:OpenSourceTop) 猿妹整编

项目地址:https://github.com/google/zx

大家都知道Bash很好用,但是在编写脚本时,人们通常会选择一种更方便的编程语言,比如JavaScript,但是Node.js库在使用之前还需要许多额外的操作,整体来说还是不够方便,最近谷歌开源了一个能够帮助开发者快速编写脚本的工具——ZX,短短几天就登上了Github热榜。

ZX的安装十分简单:

npm i -g zx

接下来,你需要将你的脚本编写在带有.mjs扩展名的文件中,以便能够await在顶层使用。如果你喜欢.js扩展名,可以将脚本包装为void async function () {...}()。

将以下shebang添加到zx脚本的开头:

#!/usr/bin/env zx

现在,你将能够像这样运行脚本:

chmod +x ./script.mjs
./script.mjs

或通过zx可执行文件:

zx ./script.mjs

常用命令举例

使用child_process包中提供的exec函数可以把字符串当做命令执行,并返回Promise<ProcessOutput>对象。

let count = parseInt(await $`ls -1 | wc -l`)
console.log(`Files count: ${count}`)

例如,要并行上传文件:

let hosts = [...]
await Promise.all(hosts.map(host =>
  $`rsync -azP ./src ${host}:/var/www`  
))

如果执行的程序返回一个非零的退出代码, 将会抛出ProcessOutput对象:

try {
  await $`exit 1`
} catch (p) {
  console.log(`Exit code: ${p.exitCode}`)
  console.log(`Error: ${p.stderr}`)
}

ProcessOutput

class ProcessOutput {
  readonly exitCode: number
  readonly stdout: string
  readonly stderr: string
  toString(): string
}

cd(),更改当前工作目录

cd('/tmp')
await $`pwd` // outputs /tmp

fetch(),对node-fetch包的包装:

let resp = await fetch('http://wttr.in')
if (resp.ok) {
  console.log(await resp.text())
}

question(),对readline包的包装:

type QuestionOptions = { choices: string[] }

function question(query?: string, options?: QuestionOptions): Promise<string>

用法:

let username = await question('What is your username? ')
let token = await question('Choose env variable: ', {
  choices: Object.keys(process.env)
})

sleep(),setTimeout函数的包装。

function sleep(ms: number): Promise<void>

用法:

await sleep(1000)

chalk包,该包直接可用无需导入内部脚本:

console.log(chalk.blue('Hello world!'))

执行远程脚本,如果zx可执行文件的参数以开头https://,则将下载并执行该文件。

console.log(chalk.blue('Hello world!'))

最后,附上ZX在Github上的项目地址:https://github.com/google/zx




推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

点阅读原文,领AI全套资料!
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值