














TODO
Clerc 项目地址:https://github.com/so1ve/clerc
感觉 Clerc 写的很牛逼啊,啥功能都有(大嘘
功能列表:
Did you mean)--version 或 -V(可自定义)时输出版本号$ npm install clerc -S$ yarn add clerc$ pnpm add clerc
下面是一个最简单的命令:
import { Clerc } from "clerc";const cli = Clerc .create() .name("foo-cli") .description("A simple cli") .version("1.0.0") .command("foo", "A foo command") .on("foo", (ctx) => { console .log(ctx); }) .parse();
这么几行代码它做了些什么事呢(?)让我们来分析下罢
Clerc.create():没啥好说的,字面意义,创建一个新的 Clerc 实例
cli.name(),cli.description(),cli.version():也都是字面意思,分别设置 CLI 的名称,描述和版本。注意这三个方法是必须调用的,否则会报错=v=
cli.command():这个方法说是 Clerc 中最重要的方法也不为过,它负责注册命令。它接受 1~3 个参数。
cli.command(name, description, options?)。其中 options 的类型为:interface CommandOptions { alias?: string | string[]; parameters?: string[]; flags?: Record<string, FlagOptions>; examples?: [string, string][]; notes?: string[];}
alias为一个字符串或一个字符串列表,即该命令的别名
parameters为一个字符串列表,即该命令的参数,格式为<foo>(必选参数),[foo](可选参数),<foo...>(必选展开参数)或[foo...](可选展开参数)。注意可选参数必须在必选参数后,展开参数必须在非展开参数后
flags为命令接受的 Flag,一个对象。这个东西我们之后再说
examples为该命令的示例,为一个字符串双层数组,每个元素的格式为[命令示范, 描述]。
notes为该命令的一些提示。
cli.command(commandObject)。这里的 commandObject 的类型就是上面提到的 options 类型再加上name和description两个字段,以及一个handler字段(下面会讲)。为什么要添加一个这么奇怪的形式来注册命令呢?有时你不想把命令都写在一个文件里,这样子可以方便地注册命令。cli.on(name, handler):当某命令被触发时调用 handler。handler 的签名为(ctx) => void。其中 ctx
算了之后再写,好烦
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。