zx, 如何用Javascript优雅的书写脚本命令 您所在的位置:网站首页 编写脚本教程 zx, 如何用Javascript优雅的书写脚本命令

zx, 如何用Javascript优雅的书写脚本命令

2023-03-14 12:15| 来源: 网络整理| 查看: 265

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。 背景

你还在这么写代码? 你还在用bash敲命令吗? 那你就out啦!

image.png

玩玩新花样,带来不一样的体验

js完美接入

编写脚本前,我们需要了解今天的主角

🐚zx

zx 是 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 复制代码 运行

准备功能就做好了 然后我们尝试运行程序

image.png

程序完美运行,试试bash命令呢

image.png

欧克,命令也成功运行

命令

了解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) 复制代码

image.png

sleep()

类似一个 setTimeout function.

await sleep(1000) 复制代码 总结

zx 完美的适应Javascript环境,基于zx的玩法也必定越来越多,也期待社区能后更多有趣的脚本。

zx引进门, 修行在个人,兄弟们,冲

接下来也会给大家分享几个有意思的脚本,敬请期待



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有