1.本地调试脚手架
移除脚手架命令
npm remove -g cj_test_2
创建本地脚手架,在当前脚手架项目下执行命令
npm link
创建本地库文件
cd your-lib-dir
npm link
cd your-cli-dir
npm link your-lib
取消链接本地库文件
cd your-lib-dir
npm unlink
cd your-cli-dir
npm unlink your-lib
理解npm link
-
npm link your-lib:将当前项目中node_modules下指定的库文件链接到node全局node_modules下的库文件 -
npm link: 将当前项目链接到node全局node_modules中作为一个库文件,并解析bin配置创建可执行文件
2.脚手架命令注册和参数解析
利用 process 这个进程来获取命令和参数
#!/usr/bin/env node
// 注册一个命令 cj-test init
// 获取参数
const argv = require('process').argv
// 获取第三个参数作为commmand
const command = argv[2]
// 第三个参数 就当成命令参数
const options = argv.slice(3)
console.log('options', options)
console.log(argv)
if (command) {
// 实现参数解析 --version 和 init --name
if (command.startsWith('--') || command.startsWith('-')) {
const globalOption = command.replace(/--|-/, '')
if (globalOption === 'version'){
console.log('version ^1.0.1')
}else if(globalOption === 'name'){
console.log('name cj-test')
}else{
console.error('command is error')
}
} else {
console.log('command', command)
}
} else {
console.log('请输入命令')
}
if (options.length) {
// 这里只解析一个参数
let [option, params] = options
option = option.replace("--", '')
console.log('option', option, "params", params)
}
npm 发布之前要把一些unlink 全部干掉,使用线上的包