腳手架注冊和命令注冊
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 都拿到了,說明命令都注冊成功了