将收获什么
- 掌握命令行交互方法
- 服务端框架
egg.js
的应用和api
开发方法 egg.js
集成云mongodb
实现数据存储
主要内容
- 脚手架项目创建功能架构设计
- 通过命令行交互获取项目基本信息
egg.js
云mongodb
的集成- 开发前端项目模板
egg.js
获取项目模板API
开发- 项目模板下载功能开发
inquirer
源码解析,彻底搞懂命令行交互
创建功能架构设计
- 可拓展:能够快速复用到不同团队,适应不同团队之间的差异
- 低成本:在不改动脚手架源码的情况下新增模板,且新增模板的成本很低
- 高性能:控制存储空间,安装时充分利用
node
多进程提升安装性能
创建功能架构设计图
准备阶段
下载模板阶段
安装模板阶段
准备阶段开发
代码语言:javascript复制// commandsinitlibindex.js
'use strict';
const fs = require('fs');
const Command = require('@hzw-cli-dev/command');
const log = require('@hzw-cli-dev/log');
const inquirer = require('inquirer');
const fse = require('fs-extra');
const semver = require('semver');
const TYPE_PROJECT = 'project';
const TYPE_COMPONENT = 'component';
/**
* @description: init 命令 , 继承于 Command
* @param {*}
* @return {*}
*/
class InitCommand extends Command {
/**
* @description:命令的初始化阶段
* @param {*}
* @return {*}
*/
init() {
// 项目名称
this.projectName = this._argv[0] || 'project';
// 是否携带 force 参数
this.force = !!this._argv[1].force;
log.verbose('