vue-cli
- 基础:用于生成项目文件体系的搭建 + 用户交互
- metadata 配置(元数据)
- parser & render
vue-cli_2.x.x
/bin/vue-init 前置工作
1 | // 下载远程仓库 => 远程拉去github内的配置 |
面试题:如何使用本地模板,预设模板 而不是 github?
使用 –offline
如何获取用户参数
vue init webpack zhaowa-app
program.args[0] => ‘webpack’
// 是否包含斜杠 => 路径层级 =>非默认预制模板
const hasSlash = template.indexOf(‘/‘)>-1
// 项目名称
rawName = program.args[1]
//输入是否为空 => 是否以当前文件目录作为项目根目录
const inPlace = !rawName || ‘.’
//调整当前目录作为构建目录的根路径
const name = inPlace ….
//本地目录模板仓库路径拼接 /zhaowa/.vue-templates/webpack
const tmp = path.join(home,’…’)
/lib/generate.js
1 | // 静态网页文件生成器 |
/lib/ask.js
解析传进来的模板有哪些要询问的
inquirer.prompt
/lib/filter.js 过滤不需要的
vue-cli_3.x.x
/lib/create.js
1 | const creator = new Creator(name, targetDir, getPromptModules()) |
/lib/Creator.js
1 | module.exports = class Creator extends EventEmitter {} |
流程
用户创建指令 -> 创建参数解析 -> 加载模板(远端/本地) – prompts –> 处理文件路径 -> 文件层级处理 -> 文件模板渲染(plugins) -> 产出包
如何书写 node 脚本工具