← 全部工具

nocoo/clip

热度 65 更新于 开发与构建

✂️ Generate fully working CLIs from a clip.yaml schema, with built-in credential management

githubauto-collected

安装

暂未验证可直接使用的安装命令,请查看项目官方文档或 Release。

<p align="center" <img src="logo.png" width="128" height="128" alt="clip logo" / </p <h1 align="center"clip</h1 <p align="center"用 clip.yaml 生成可编辑的 TypeScript CLI,并按工具名称管理 API 凭据。</p <p align="center"<a href="docs/README.en.md"English</a</p

这是什么

clip 面向需要给 HTTP API 配套命令行客户端的开发者。它读取 clip.yaml 中的接口和鉴权配置,生成基于 commander 的 Bun CLI:每个接口对应一条命令和一个可独立修改的 TypeScript 文件。

凭据由 clip auth 单独管理,生成的命令运行时读取凭据并添加请求头,换 key 不必重新生成代码。生成器面向返回 JSON 的 API,输入格式是项目自己的 clip.yaml。

功能

  • 校验 schema 的字段、命令名称、路径参数以及重复接口定义。
  • 将路径参数变成位置参数,将 query 和 JSON body 字段变成命令行选项,处理必填项和基础数字、布尔值转换。
  • 生成 CLI 入口、HTTP client、凭据读取器、独立命令文件及项目配置。
  • 支持单请求头 API key、浏览器登录 token、Cloudflare Access 双请求头服务令牌。
  • 通过 CLIPBASEURL 切换目标服务,通过 CLIPHOME 指定凭据目录。
  • 为 header 和 browser-login 配置生成 API 测试;cf-access 目前只生成 CLI,不生成这组测试。

生成的代码可以手动调整。再次生成会覆盖同名文件,修改后应先保存自己的版本。数组参数、非 JSON 响应等处理需要按具体 API 调整生成代码。

使用

从源码安装

需要 Bun。CLI 包在仓库中标记为 private,使用源码安装:

git clone https://github.com/nocoo/clip.git
cd clip
bun install --frozen-lockfile
cd packages/cli
bun link
cd ../..
clip --help

确保 Bun 的可执行文件目录位于 PATH 中。也可以在仓库根目录用 bun packages/cli/src/index.ts 代替 clip,不注册全局命令。

跑通本地示例

在仓库根目录的一个终端启动内存中的 Todo API:

bun packages/example-api/src/index.ts

它默认使用 http://localhost:3456。在另一个终端回到仓库根目录:

clip auth set todo --header X-API-Key
clip install packages/example-api/clip.yaml
todo list
todo create --title 'Try clip'
todo list

第一个命令会提示输入 key。本地示例的默认值为 test-api-key;如果启动服务时设置了 APIKEY,输入对应值。clip install 会生成项目、安装生成项目的依赖,再通过 bun link 注册 todo 命令。