futu-cli
Version:
A simple CLI for scaffolding futu5_ipo projects.
83 lines (61 loc) • 3.02 kB
Markdown
# futu5 node.js 接入层脚手架代码说明
## 目录说明
```
├── bin 命令文件
│ ├── futu - 输出当前脚手架版本及帮助信息
│ └── futu-init - 脚手架生成项目主要命令及逻辑
├── config 配置文件
│ └── index.js - 配置官方仓库前缀
├── docs
│ ├── 如何写自定义模板.md
│ └── 脚手架方案.md
├── lib 脚手架自定义方法
│ ├── ask.js - 将模板配置文件中的 prompts 解析成对应问题并询问
│ ├── download.js - 下载模板,根据 download-git-repo 基础上支持 http 协议
│ ├── eval.js - 用于判断某个问题是否需要询问,与当前问题对象的 when 字段相关
│ ├── filter.js - 结合问题答案删除不需要的文件
│ ├── generate.js - 生成项目主逻辑!重要
│ ├── git-user.js - 获取作者 git 信息
│ ├── local-path.js - 用于判断是否是本地路径、获取本地路径的绝对路径
│ ├── logger.js - 自定义日志方法:常规log日志、fatal错误日志、success成功日志
│ └── options.js - 获取模板配置文件对象、向配置对象添加默认问题对象(name)
├── test 单元测试
│ └── e2e
└── package.json
```
## generate.js
含构建项目主逻辑:
```
获取模板配置对象 -->
初始化 Metalsmith,读取模板文件流-->
为 handlebars 模板注册模板配置对象中定义的 helpers -->
配置对象中是否有 before 函数,有则执行 -->
询问问题 -->
过滤文件 -->
渲染模板文件 -->
配置对象中是否有 after 函数,有则执行 -->
最后构建项目内容 -->
构建完成 -->
成功,若配置对象中有 complete 函数则执行,否则打印配置对象中的 completeMessage 信息
错误,执行回调函数 done(err)
```
主要函数:
* askQuestions: 询问问题
* filterFiles: 过滤文件
* renderTemplateFiles: 渲染模板文件
* logMessage: 用于构建成功时,打印信息
## options.js
主要内容:
1. 获取模板配置文件的配置对象
2. 给配置对象添加默认问题对象 - name(可能存在模板配置对象中无问题询问 package.name 的情况)
3. 读取本地 git 用户相关信息,并初始化 author 字段(package.author)
主要方法:
* getMetadata: 获取 meta.js 或则 meta.json 中的配置信息
* setDefault: 用于向配置对象中添加 name 问题对象
* setValidateName: 为 name 问题对象添加校验函数
## ask.js
主要内容:将 meta.js 或者 meta.json 中的 prompts 字段解析成对应的问题并询问
## filter.js
根 ask.js 收集到的用户的需求删除一些不需要的模板文件。
## logger.js
主要提供三个方法 log(普通日志输出)、fatal(错误日志输出)、success(成功日志输出)