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

相关推荐
前端之虎陈随易3 分钟前
编程语言级别的Skill市场,AI Agent 的未来形态
前端·vue.js·人工智能·typescript·node.js
一路向北he5 分钟前
字节钢铁军团--“提供情境,而非控制”
java·开发语言·前端
码事漫谈7 分钟前
别写Prompt了,现在流行给AI“写循环”
后端
kyriewen27 分钟前
豆包和千问同时关了智能体,我用它们搭的 3 个自动化全废了——迁移方案整理
前端·javascript·ai编程
前端一小卒40 分钟前
我用 TypeScript 从零手写了一个 Claude Code,然后发现它的核心只有 30 行
前端·agent
铁皮饭盒1 小时前
用 Bun.cron 定时 7 月 7 日,为啥? 看图1
javascript
Kyrie_Li1 小时前
Spring Boot Kafka 生产级配置全解析:从入门到精通
spring boot·后端·kafka
Coder_Shenshen2 小时前
西门子S7CommPlus协议鉴权算法原理与流程详解
网络·后端·算法
大圣编程2 小时前
Python中continue语句的用法是什么?
开发语言·前端·python
yuhaiqiang2 小时前
随手 vibecoding 的浏览器插件已经 6000 多次下载,聊聊他的产品设计
前端·后端·面试