这些术语属于不同层级,不应互相替换。学习如何定义命令时先读 核心概念;只有需要确认精确含义时再查本页。
用户输入中的普通 CLI 术语
| 术语 | 含义 | 对应位置或 API |
|---|---|---|
一次调用 | 用户从启动可执行文件到程序退出的完整执行,例如 ship project —help。 | 完整 argv |
可执行文件 | 用户输入的程序名,例如 ship。它通常由 package.json#bin 指向构建产物。 | package.json#bin |
token | 命令行解析前按顺序读取的一段输入,例如 project、—role 或 owner。 | process.argv |
选项 | 普通 CLI 中对 —name、-n 及其值的统称;在 func 中还要区分字段选项和处理器标志。 | @Flag / @Value / @Handler({ flag }) |
位置输入 | 不通过选项名标识、其含义由所在位置决定的数据,例如 alice。 | @Args().inputs |
func 中用来定义 CLI 的概念
| 术语 | 含义 | 对应 API |
|---|---|---|
具名命令 | 第一个裸 token 与 name 或 alias 匹配后选中的命令类。 | @Command() |
主命令 | 处理没有具名命令的调用,包括只有可执行文件或以选项开头的调用。 | @CommandMajor() |
缺失命令 | 可选的后备命令类,在第一个裸 token 无法匹配具名命令时接收调用。 | @CommandMissing() |
处理器 | 命令类中执行具体动作的方法;一次调用只会选择一个处理器。 | @Handler() |
默认处理器 | 没有匹配路径或处理器标志时执行的方法。一个命令类最多定义一个。 | @Handler() |
处理器路径 | 使用一段或多段固定位置 token 选择处理器,匹配时最长路径优先。 | @Handler({ path }) |
处理器标志 | 通过 —help 一类选项改为执行另一个互斥处理器。 | @Handler({ flag, alias }) |
字段选项 | 解析并赋值到命令实例属性上的标志、单值或重复值。 | @Flag / @Value / @ArrayValue |
输入 | 移除具名命令和已匹配处理器路径后剩余的位置 token。 | FuncArgs.inputs |
运行时与应用结构术语
| 术语 | 含义 | 对应 API |
|---|---|---|
命令作用域 | 本次调用最终选中的一个装饰器类:主命令、具名命令或缺失命令。 | CommandMajor / Command / CommandMissing |
注册表 | 已注册具名命令的只读元数据集合,最常用于生成帮助信息。 | @Regs() / CommandRegistry |
模块 | 组织命令、服务和导入模块的应用边界,本身不是可执行命令。 | @FuncModule() |
服务 | 由模块注册并按构造参数类型注入的可复用类,通常承载业务或基础设施逻辑。 | @Service() |