node创建自己的CLI脚手架(强化基础)
什么是脚手架
- 全局命令行工具
- 能够创建项目初始化代码及目录
- 命令行交互能力
创建自己的脚手架
- 脚手架项目初始化
1、初始文件夹下新建bin文件夹
2、bin文件夹下新建index.js
3、初始文件夹下npm init
// 这样的顺序就会在package.json中生成对应关系如下
"name": "mycli",
"bin": {"mycli": "bin/index.js"},
- 在根目录运行npm link(本地测试全局命令)
npm link 是一个用于将本地包链接到全局包的命令;
因为它允许你在本地测试和调试你的包,而无需每次更改后都发布它。
此时,在任何一个可以输入命令行的地方mycli,可以看到"bin/index.js"中的打印
- 入口文件(bin/index.js)
定义指令->指令回调中交互->交互完成后then中下载代码
#!/usr/bin/env nodeconst inquirer = require('inquirer'); //8.2.6
const { program } = require('commander'); // 14.0.0
const download = require('download-git-repo') //3.0.2
// commander帮助自定义指令及选项参数
program.command('create <name> [others...]')
.alias('c') // 指令别名
.description('new project') // 指令描述
.action((name, args) => { // 指令回调函数inquirer.prompt([ //inquirer提供命令行问答交互能力{type: 'input',name: 'name',message: '请输入项目名称'}]).then(answers => {// download-git-repo帮助下载远程仓库模版download('direct:git@gitee.com:la_yp/test-1.git',name, { clone: true }, function (err) {console.log(err ? 'Error' : 'Success')})})
})
// 解析命令行参数
program.parse(process.argv);