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

一、为什么?

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

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

二、目标

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

三、安装

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

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 生态中的库一起生成一个符合跨端的工具集合。

六、示例

基本的使用方法

icall touch your_name.tsx

创建一个 xxx 文件。

集成社区命令

icall cowsay hi icall ~

得到如下的输出结果

____________
< hi icall ~ >
 ------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

七、开发文档

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

八、贡献代码

git clone https://github.com/yyong008/call-cli

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

技术方案

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

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

十、小结

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

你可能感兴趣的:(用 Node.js 实现了一个跨端的 icall-cli)