UNPKG

futu-cli

Version:

A simple CLI for scaffolding futu5_ipo projects.

83 lines (61 loc) 3.02 kB
# 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(成功日志输出)