参数处理

占位符命名空间

三个命名空间完全隔离:

命名空间语法说明
具名占位符{xxx}匹配输入中 xxx 后面紧跟的值
可选透传{{xxx}}xxx 则原样渲染,无则消失
系统占位符${...}固定语义,由系统提供

占位符一览

占位符说明消耗位置数
{xxx}匹配输入中 xxx 后面紧跟的值2(xxx + 值)
{{xxx}}可选透传,有则渲染为 xxx value,无则消失2(有值时)
{xxx?}条件渲染(最简),有 xxx 则渲染为 xxx,无则消失1
{xxx?渲染1:渲染2}条件渲染(三元)1
${N}原始参数第 N 个(从 0 开始)1(位置 N)
${args}所有原始参数不消耗
${...args}剩余参数(去除已被其他占位符消耗的)不消耗

消耗规则

  • {xxx} / {{xxx}} 消耗 xxx 及其紧跟的值(共 2 个位置)
  • {xxx?} / {xxx?渲染1} / {xxx?渲染1:渲染2} 只消耗 xxx 本身(1 个位置)
  • ${N} 消耗位置 N
  • 同一占位符多次出现,只消耗一次,值复用
  • ${...args} 的剩余 = 所有原始参数 - 已被消耗的位置,按原始顺序拼接

无值 / 无占位符行为

无占位符行为

别名中不含任何占位符时,自动追加所有原始参数,等价于末尾隐式追加 ${args}。兼容 find 命令中的裸 {}(如 find . -exec ... {} +),不会被解析或替换。

无值行为

任何占位符取不到对应的值时,静默消失,不报错。参数缺失导致的错误由底层命令的运行时处理。

具名占位符示例

长选项
短选项
# "copy": "cp {--src} {--dest}"
byk copy --src foo.txt --dest bar.txt
# 执行:cp foo.txt bar.txt

可选透传示例

# "build": "vite build {{--mode}}"
byk build --mode production
# 执行:vite build --mode production

byk build
# 执行:vite build

条件渲染示例

最简形式
三元形式
# "dev": "vite {--open?--open}"
byk dev --open
# 执行:vite --open

byk dev
# 执行:vite

位置参数示例

绝对位置
重复使用
剩余参数
# "echo": "echo ${0} ${2}"
byk echo aaa bbb ccc
# 执行:echo aaa ccc