开源最前线(ID:OpenSourceTop) 猿妹整编 项目地址:https://github.com/google/zx
大家都知道Bash很好用,但是在编写脚本时,人们通常会选择一种更方便的编程语言,比如JavaScript,但是Node.js库在使用之前还需要许多额外的操作,整体来说还是不够方便,最近谷歌开源了一个能够帮助开发者快速编写脚本的工具——ZX,短短几天就登上了Github热榜。
接下来,你需要将你的脚本编写在带有.mjs扩展名的文件中,以便能够await在顶层使用。如果你喜欢.js扩展名,可以将脚本包装为void async function () {...}()。
chmod +x ./script.mjs ./script.mjs
使用child_process包中提供的exec函数可以把字符串当做命令执行,并返回Promise对象。
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}`) }
class ProcessOutput { readonly exitCode: number readonly stdout: string readonly stderr: string toString(): string }
cd('/tmp') await $`pwd` // outputs /tmp
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) })
function sleep(ms: number): Promise
console.log(chalk.blue('Hello world!'))
执行远程脚本,如果zx可执行文件的参数以开头https://,则将下载并执行该文件。
console.log(chalk.blue('Hello world!'))
最后,附上ZX在Github上的项目地址:https://github.com/google/zx 推荐阅读: 谷歌这个牛逼的开源数据库,我居然等到它上Github热榜才发现
1534K Star!排名前十的 10 大前端开源项目都开源了些啥?一起来看看吧!
微软这个开源项目碉堡了!草图秒变HTML代码
据说精通Git的程序员,都用过这个开源项目
谷歌大神又一开源神器!代码调试不选它选谁?
上一篇:php中文网APP(iOS+安卓)全新上线! 下一篇:0x11Android中Drozer使用安装总结 |