脚手架注册和命令注册
1 )脚手架的注册
- 接上文,仍旧在
abc-cli
项目中 - 参考:https://blog.csdn.net/Tyro_java/article/details/136381086
- 之前初始化的时候,使用的是 yargs, 现在我们想要使用 commander
- 在cli包中安装 commander $
npm i commander -w @abc.com/cli
- 进入 abc-cli/packages/cli/lib/inex.js
const commander = require('commander'); const { program } = commander; const pkg = require('../package.json');module.exports = (args) => {program.name(Object.keys(pkg.bin)[0]).usage('<command> [options]').version(pkg.version).option('-d, --debug', '是否开启调试模式', false)program.parse(process.argv) }
- 在 cli 目录下执行 $
abc-cli -V
验证可以正确输出版本 - 这样脚手架注册的默认流程实现了
2 )命令的注册
-
接着写这个程序
const commander = require('commander'); const { program } = commander; const pkg = require('../package.json');module.exports = (args) => {program.name(Object.keys(pkg.bin)[0]).usage('<command> [options]').version(pkg.version).option('-d, --debug', '是否开启调试模式', false)// 这里注册命令program.command('init [name]').description('init project').option('-f, --force', '是否强制更新', false).action((name, opts) => {console.log('init ...')console.log(name)console.log(opts)})program.parse(process.argv) }
-
验证下,在cli目录执行 $
abc-cli -h
, 有如下返回Usage: abc-cli <command> [options]Options:-V, --version output the version number-d, --debug 是否开启调试模式 (default: false)-h, --help display help for commandCommands:init [options] [name] init projecthelp [command] display help for command
- 可以看到 Commands 栏多了 init 命令
-
在cli目录下,执行 $
abc-cli init 666 -f
,可看到init ... 666 { force: true }
- 这里,name 和 opts 都拿到了,说明命令都注册成功了