内置类 Program 及 Util
Program
Program 是框架提供的 Singleton 原型,内置了一些便捷 API ,可以在生命周期中注入并使用,相关能力如下:
注册 Option
可以通过 Program 的 option 方法指定全局 Option 或者针对部分指令添加 Option 。使用方式如下
VSCode
注册中间件
除了前面通过装饰器注册中间件,也可以在 lifecycle 中通过 program 注册中间件( 三种中间件均支持 ),比如内置的 plugin-version 的实现:
index.ts
注册三种中间件的方法分别是:
use注册 pipeline 中间件useInCommand注册指令中间件( 通过 program 注册到 command 的中间件不会被继承 )useInExecution注册 run 函数中间件
Utils
Utils 是框架提供的在 Execution 阶段使用的工具类,可以用于中间件或者在指令中注入并使用。提供了两个方法:
redirect(argv: string[])重定向指令,会新建 pipeline ,上面有过介绍。forward(clz: typeof Command, args?: T)转发指令,入参是指令类,也可以传入参数( 如果传了会覆盖已有解析出来的参数 )。- 跟 redirect 的差异:在当前 pipeline 触发( 即不会触发 pipeline middleware ),而 redirect 会新建 pipeline。
重定向
使用方式如下
VSCode
转发
由于 forward 不会新建 pipeline,不会再解析 argv,所以传入的参数要求是转发的 Command 和已经解析好的 args ,使用方式如下
使用场景是在想在同个上下文中( 同样的 args 解析结果 ),直接转发到其他指令,要求这两个指令的 Options 是兼容的。
VSCode