Lerna脚手架搭建(十六):脚手架命令注册
本文最后更新于:2024年12月10日 下午
一、命令注册 👈
- 编辑
core/cli/lib/index.js
文件的 registerCommand 方法,接入init
命令配置,内容如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15function registerCommand() {
program
.name(Object.keys(pkg.bin)[0])
.usage('<command> [options]')
.version(pkg.version)
.option('-d, --debug', '是否开启调试模式', false);
program
.command('init [projectName]')
.option('-f, --force', '是否强制初始化项目')
.action((projectName, cmdObj) => {
console.log('init', projectName, cmdObj.force);
});
...
} - 分别执行
xuven-cli-dev init
和xuven-cli-dev init test-project --force
,输出结果如下:
- 在
xuven-cli-dev
目录下执行lerna create @xuven-cli-dev/init
创建@xuven-cli-dev/init
库; - 将生成的
cli/init
目录移动到commands
目录下; - 修改
commands/init/package.json
文件内的main
参数,改成:"main": "lib/index.js"
,修改版本号为 1.0.0; - 重命名
commands/init/lib/init.js
文件为commands/init/lib/index.js
; - 编辑
commands/init/lib/index.js
文件,内容如下:1
2
3
4
5
6
7'use strict';
function init(projectName, cmdObj) {
console.log('init', projectName, cmdObj.force);
}
module.exports = init; - 编辑
core/cli/package.json
文件,加入"@xuven-cli-dev/init": "file:../../commands/init",
依赖; - 编辑
core/cli/lib/index.js
文件,内容如下:1
2
3
4
5
6...
const log = require('@xuven-cli-dev/log');
const init = require('@xuven-cli-dev/init');
const constant = require('./const');
... - 在
core/cli
目录下执行:npm link
; - 执行命令:
xuven-cli-dev init test-project --force
,结果如下:
Lerna脚手架搭建(十六):脚手架命令注册
https://blog.xuven.xyz/post/CommandRegistration/