@smallchen/rt-cli v1.1.1
*脚手架使用
如果本地调试的话:
运行:需要在此项目根目录下运行此命令
npm link
,即可操作使用相关指令卸载:使用
npm unlink
* 实现步骤
1.初始化项目: npm init
2.创建入口文件 index.js
- 文件顶部声明:
#! /usr/bin/env node
说明:用于告诉操作系统脚本是node环境下执行
3.执行入口文件
在package.json文件中添加
"bin": {
"RT-CLI": "index.js"
}
// 这样就可以直接在终端中输入RT-CLI,就可以直接找到并执行index.js文件
4.使用命令
执行npm link
进行连接,即可直接使用RT-CLI
命令
* 常用指令
使用commander,实现指令的生成
指令名 | 说明 |
---|---|
-version / -v | 查看版本号 |
-h | 帮助查阅指令 |
list | 可使用脚手架模板列表 |
create <projectName> templateName | 创建项目, projectName:项目名称, templateName: 模板名称 |
说明 箭头符号<>代表必填, 中括号[]代表选填
commander基础教程
1) 下载: npm install commander
2) 作用:自定义指令与处理指令相关逻辑,是脚手架的核心
3) 常用api:
version
: 设置版本号, 接收两个参数,1.版本号 2.输入指令名 可以命名多个
description
: 对指令的描述说明,值得注意的是:这里描述只会在使用-h帮助的时候,打印出来,而在执行某一指令时是不显示的
command
: 定义指令名, 接多个数据 通过空格分开,第一个是指令名称,后面的是参数,这里有个点就是后面的参数可以选填和必填控制,选填:[], 必填:<>
action
: 执行相关指令,逻辑处理的地方,回调方法接收两个参数;如果command接收多个参数,则会在回调的参数中返回,否则返回默认参数。
parse(process.argv)
: 这个很重要,在文件后必添加,否则api无法执行,这是一个坑点。
实现创建初始化项目命令
流程
:这是整个脚手架的核心,其他的指令等都是锦上添花的东西。其实这个主要过程无非就是:通过用户输入相关指令,脚手架通过相关指令向git托管平台上下载相关初始化项目,从而创建项目。核心
: download-git-repo实现
:结合commader,在action回调中执行相关语法,实现下载;核心代码:const download = require('download-git-repo') download(`direct:${gitUrl}#master`, projectName, { clone: true }, (err) => { if(err){ console.log('创建失败', err) return } console.log('创建成功') })
download-git-repo说明
1) 只能下载gitlab、github、Bitbucket 托管平台 2) 第一个参数添加direact:
,防止下载失败等情况;#master
:指定分支版本 3) 第二个参数: 指定存储位置
*交互 inquirer
inquirer主要是用来在黑窗口可以与用户交互的插件,用来收集用户所操作的信息从而实现符合相关逻辑。
1.下载inquirer: npm install inquirer
2.常用写法
inquirer.prompt([{
type: 'list',
name: 'framName',
message: '选择你的框架:',
default: 'Vue',
choices: ['Vue', 'React']
}, {
type: 'confirm',
name: 'useTs',
message: '是否使用TS:(Y/N)',
default: 'Y',
}])
.then((answers) => {
console.log('收集的选择的信息', answers)
})
.catch((error) => {
if (error.isTtyError) {
// Prompt couldn't be rendered in the current environment
} else {
// Something else went wrong
}
});
*配置项目 handlebars
模板语言,动态扩展项目对应文件的公共配置。
*美化 ora chalk
- ora插件 用于显示加载 成功 失败等动画效果
- chalk插件 用于自定义提示文本的颜色
- log-symbols 用于添加状态图标 info/success/warning/error