千家信息网

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

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,小编给大家分享一下怎么制作CLI可能用到的轮子,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!开始之前先要了解npm的bin
千家信息网最后更新 2025年02月01日怎么制作CLI可能用到的轮子

小编给大家分享一下怎么制作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("")

.description('Login Module')

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

.option("-p, --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("")

.description("Login Module")

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

.option("-p, --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 ', '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可能用到的轮子"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

生成 全局 文件 参数 命令 进度 轮子 篇文章 制作 内容 文档 中文 参考 帮助 下文 不怎么 代码 优势 先后 入口 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 进入数据库的命令 数据库压力大崩了影响其他站点吗 剑三人物怎么导入数据库 网络安全中美优势对比 呈贡区综合软件开发价格信息 阿里云服务器专用网络 医学类科学引文数据库 招远微信小程序软件开发推荐 公安部关注网络安全教育日 连接数据库经常出现超时 沈阳市公益遗嘱数据库 疫情期间网络安全工作 网络安全风险相关的案例分析 orical怎么查数据库版本 数据库char的最大长度 天融信软件开发级别 数据库如何调试包 西门子博途wincc自带数据库 火绒个人版更新服务器搭建 华强北一对一学软件开发 郑州安卓应用软件开发公司哪个好 法律互联网科技公司 网络安全的三关三检测是什么 潮州专业软件开发维修电话 四川大学网络安全课程 政府加强网络安全人才培养 上海网络安全评高级职称 阿里巴巴网络安全知识 福建网络时钟服务器虚拟主机 数据库加缓存技术
0