温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么制作CLI可能用到的轮子

发布时间:2022-02-28 09:56:31 来源:亿速云 阅读:164 作者:小新 栏目:web开发

小编给大家分享一下怎么制作CLI可能用到的轮子,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

开始之前先要了解npm的bin用法。

 "bin": {

   "init": "index.js"

 }

执行npm install -g就在全局安装了init命令,在CMD里就可以执行init。

执行之后,由于在我本机目前默认是由VS Code打开JavaScript文件,所以效果并不是执行代码(这个问题下文有继续,千万别走开,有个坑)。从上面日志打印可以看出,实际上Node.js相当于建立了一个快捷方式,init指向安装到全局模块的该工程的index.js,而init是被加入了到环境变量PATH可以直接执行。

也可以使用npm link直接将index.js链接到PATH里,但先要npm uninstall -g卸载一下,否则会报重复了的错误。

现在正式开始观赏轮子,以下排名不分先后。

command.js

command.js可以和刚才bin生成的全局命令一起配合使用,有一个优势是它居然还有中文文档,虽然E文对我来说不是难事,但是中文的还是读起来快多了。

 const { program } = require("commander");

 program

   .version("0.0.1")

   .arguments("<file>")

   .description('Login Module')

   .option("-u, --username <username>", "The user to authenticate as")

   .option("-p, --password <password>", "The user's password")

   .action(function (file) {

     console.log(program.opts());

     console.log(file);

   })

   .parse(process.argv);

一开始使用全局命令不能接受参数而直接使用Node.js执行是可以的。

后来找了下,原来主入口文件开头的#! /usr/bin/env node是必须的,加入后变为

 #! /usr/bin/env node 

 const { program } = require("commander");

 program

   .version("0.0.1")

   .arguments("<file>")

   .description("Login Module")

   .option("-u, --username <username>", "The user to authenticate as")

   .option("-p, --password <password>", "The user's password")

   .action(function (file) {

     console.log(program.opts());

     console.log(file);

   })

   .parse(process.argv);

再次执行(有可能需要重新npm [un]install -g或者npm [un]link),这次OK了

arguments里带<>的参数表示是必须的,如果缺失,就不能继续进行。

参数里要定义必填项使用。requiredOption,比如program.requiredOption('-c, --cheese <type>', 'pizza must have cheese');。

commander.js根据参数也自动帮你生成了帮助命令init --help

更详细的用法请参考官方文档。

svg-term-cli

svg-term-cli用来生成ascii码动画的SVG文件。它需要全局安装

 npm install -g svg-term-cli

现在从https://asciinema.org/a/113643上生成SVG动图

 svg-term --cast 113643 --out examples/parrot.svg --window --no-cursor --from=4500

结束后会在examples下生成一个parrot.svg的文件,打开这个文件看看,太浪了

progress

progress用来生成一个等待进度条。

 var ProgressBar = require("progress");

 var bar = new ProgressBar(":bar", { total: 40 });

 var timer = setInterval(function () {

   bar.tick();

   if (bar.complete) {

     console.log("\ncomplete\n");

     clearInterval(timer);

   }

 }, 1000);

生成如下的进度条

我们常见的下载进度展示,就可以用它来实现

ora

对于不确定的进度情况,就可以使用ora了。它就是那种爱的魔力转圈圈的样式。

 const ora = require("ora");

 const spinner = ora("Loading unicorns")。start();

 setTimeout(() => {

   spinner.color = "yellow";

   spinner.text = "Loading rainbows";

 }, 1000);

 setTimeout(() => {

   spinner.fail();

 }, 3000);

以上是“怎么制作CLI可能用到的轮子”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

cli
AI