用 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 和生态实现一个工具集合,方便我开发,并希望社区中感兴趣的小伙伴,一起使用和维护代码。

相关推荐
三小河5 小时前
前端视角详解 Agent Skill
前端·javascript·后端
牛奔5 小时前
Go 是如何做抢占式调度的?
开发语言·后端·golang
Aniugel5 小时前
单点登录(SSO)系统
前端
颜酱5 小时前
二叉树遍历思维实战
javascript·后端·算法
鹏多多5 小时前
移动端H5项目,还需要react-fastclick解决300ms点击延迟吗?
前端·javascript·react.js
serioyaoyao5 小时前
上万级文件一起可视化,怎么办?答案是基于 ParaView 的远程可视化
前端
万少6 小时前
端云一体 一天开发的元服务-奇趣故事匣经验分享
前端·ai编程·harmonyos
WindrunnerMax6 小时前
从零实现富文本编辑器#11-Immutable状态维护与增量渲染
前端·架构·前端框架
不想秃头的程序员6 小时前
Vue3 封装 Axios 实战:从基础到生产级,新手也能秒上手
前端·javascript·面试
爱装代码的小瓶子6 小时前
【C++与Linux基础】进程间通讯方式:匿名管道
android·c++·后端