zx, 如何用Javascript优雅的书写脚本命令 | 您所在的位置:网站首页 › 编写脚本教程 › zx, 如何用Javascript优雅的书写脚本命令 |
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
背景
你还在这么写代码? 你还在用bash敲命令吗? 那你就out啦! 玩玩新花样,带来不一样的体验 js完美接入编写脚本前,我们需要了解今天的主角 🐚zxzx 是 google 团队出品的一个用Javascript编写脚本命令的三方库。 ---> 嗯. 真香 zx的出现,给前端开发者拥有了极好的体验。因为我们可以使用 Javascript 去编写脚本命令。正如它官方而言 Bash is great, but when it comes to writing scripts, people usually choose a more convenient programming language. 前端开发拿手的不就是 Javascript, 嗯 开整 install npm i -g zx // or yarn add -g zx 复制代码要求 Node.js >= 14.13.0 编写脚本 起步为了更好使用,我们需要将我们的.js后缀改写为.mjs,同时在package.json中添加 "type": "module" 复制代码然后我们需要在我们的脚本文件开头(顶部)添加特殊注释标记为 zx 脚本 #!/usr/bin/env zx 复制代码 运行准备功能就做好了 然后我们尝试运行程序 程序完美运行,试试bash命令呢 欧克,命令也成功运行 命令了解zx还可以了解他的其他几个属性、方法如何使用。 最常见的的使用莫过于我们编写脚本命令,如何编写呢。 $`command`使用包中的spawn函数 执行给定的字符串child_process并返回ProcessPromise. 通过的一切${...}都会被自动转义和引用。 let name = 'foo & bar' await $ `mkdir ${ name } ` 复制代码无需添加额外的引号。 如果需要,您可以传递参数数组: let flags = [ '--oneline' , '--decorate' , '--color' , ] await $ `git log ${ flags } ` 复制代码如果执行的程序返回非零退出代码, ProcessOutput将被抛出。 try { await $`exit 1` } catch (p) { console.log(`Exit code: ${p.exitCode}`) console.log(`Error: ${p.stderr}`) } 复制代码 cd()更改当前工作目录。 cd('/tmp') await $`pwd` // outputs /tmp 复制代码 fetch()网络请求,fetch实际上是基于node-fetch进行开发 let resp = await fetch('http://wttr.in') if (resp.ok) { console.log(await resp.text()) } 复制代码 question() let q1 = await question('我帅吗?') console.log(q1) let q2 = await question('你要一键三连吗?', { choices: Object.keys(process.env) }) console.log(q2) 复制代码类似一个 setTimeout function. await sleep(1000) 复制代码 总结zx 完美的适应Javascript环境,基于zx的玩法也必定越来越多,也期待社区能后更多有趣的脚本。 zx引进门, 修行在个人,兄弟们,冲 接下来也会给大家分享几个有意思的脚本,敬请期待 |
CopyRight 2018-2019 实验室设备网 版权所有 |