用 Node.js 实现了一个跨端的 icall-cli

一、为什么?

有时候我们会使用不同的操作系统,在它们之间进行切换,但是不同的操作系统的命令行的名字可能不一样。例如:linux 使用 touch 创建一个文件,windows 种使用 ni 命令创建文件,这个使得一个初学者在不同的操作系统之间切换时,需要掌握不同的命令,开始时候非常让人困惑。

那么我们能对这些常用的命令进行跨端的封装吗?答案是能够的,我们可能不需要 linux 强大的命令,其实在开发过程中,需要用的命令其实并不多。

二、目标

icall-cli 的目标是满足开发者(前、后端开发者,尤其是 JavaScript/TypeScript)日常的跨端 cli 的需求。为开发者提供 cli 层面的 polyfill。

三、安装

首先需要 Node.js 环境,通过 npm 来安装

sh 复制代码
npm i -g icall-cli

安装之后,我们就能使用 icall 命令。

四、常用命令集成

基于 linux 的命令为主要导向,使用 windows cmd/powershell 命令作为别名,构建命令。例如:touch 创建文件,mv 移动文件等等文件相关的操作,这些文件相关的操作。

  • cat 输出指定文件的内容
  • cp 复制文件/文件夹
  • mkdir 创建文件夹
  • rm 删除文件夹
  • touch 创建文件

五、集成了一些工具

目前在 icall 中集成了常用社区命令,为了更加方便我们的开发:

  • cowsay 输出有意思的内容
  • base64 依据输入的字符串输出 base64 码
  • hash 依据输入的内容输出 hash 码
  • ipconfig 输出当前系统的 ipconfig 或者 ifconfig
  • ping 检查是否在线
  • qrcode 根据地址字符串输出二维码
  • top 当前的进程
  • tree 查看当前文件夹构造

这些命令其实都是用 Node.js 的文件系统和 Node.js 生态中的库一起生成一个符合跨端的工具集合。

六、示例

基本的使用方法

sh 复制代码
icall touch your_name.tsx

创建一个 xxx 文件。

集成社区命令

sh 复制代码
icall cowsay hi icall ~

得到如下的输出结果

sh 复制代码
____________
< hi icall ~ >
 ------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

七、开发文档

开发文档目前使用 vitepress 构建在 vercel 平台并部署,感兴趣的小伙伴可以访问 icall-cli

八、贡献代码

sh 复制代码
git clone https://github.com/yyong008/call-cli

如果你也对 Node.js 跨端 CLI 感兴趣,期待社区中有能力,有时间的小伙伴一起维护此项目。当然你也可以直接提 Issue

技术方案

本项目采用以下技术方案:

  • commander 作为命令管理工具
  • unbind 打包 TS 文件
  • vitepress 作为文档工具
  • vitest 测试工具
  • prettier 作为格式化工具
  • changeset 作为版本管理工具

十、小结

本文主要讲解我们在不同平台使用 CLI 会遇到的困惑,然后然后自己手动基于 Node.js 和生态实现一个工具集合,方便我开发,并希望社区中感兴趣的小伙伴,一起使用和维护代码。

相关推荐
952364 小时前
MyBatis
后端·spring·mybatis
ZC跨境爬虫6 小时前
跟着 MDN 学 HTML day_9:(信件语义标记)
前端·css·笔记·ui·html
前端老石人6 小时前
HTML 字符引用完全指南
开发语言·前端·html
matlab_xiaowang6 小时前
Redux 入门:JavaScript 可预测状态管理库
开发语言·javascript·其他·ecmascript
幼儿园技术家6 小时前
前端如何设计权限系统(RBAC / ABAC)?
前端
uzong7 小时前
9 种 RAG 架构,每位 AI 开发者必学:完整实战指南
后端
小江的记录本7 小时前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka
止语Lab7 小时前
从手动到框架:Go DI 演进的三个拐点
开发语言·后端·golang
前端摸鱼匠8 小时前
Vue 3 的v-bind合并行为:讲解v-bind与普通属性合并的规则
前端·javascript·vue.js·前端框架·ecmascript
REDcker8 小时前
浏览器端Web程序性能分析与优化实战 DevTools指标与工程清单
开发语言·前端·javascript·vue·ecmascript·php·js