【架构师(第十三篇)】脚手架之创建项目准备阶段开发

2022-12-10 13:28:32 浏览数 (1)


将收获什么

  • 掌握命令行交互方法
  • 服务端框架 egg.js 的应用和 api 开发方法
  • egg.js 集成云 mongodb 实现数据存储

主要内容

  • 脚手架项目创建功能架构设计
  • 通过命令行交互获取项目基本信息
  • egg.jsmongodb 的集成
  • 开发前端项目模板
  • 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('


	

0 人点赞