1.1.1 • Published 2 years ago

@smallchen/rt-cli v1.1.1

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

*脚手架使用

如果本地调试的话:

  • 运行:需要在此项目根目录下运行此命令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.下载inquirernpm 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