模板下载
const CACHE_DIR = 'templates'/* 下载模板 1、通过项目模板API获取项目模板信息 1.1通过egg.js搭建后端系统 1.2通过npm存储项目模板 1.3将项目模板信息存储到mongoDB数据库中 1.4通过egg.js获取mongoDB的数据并通过API返回 3、选择创建组件或项目 4、获取项目的基本信息 */ async downloadTemplate() { const homePath = process.env.CLI_HOME_PATH const targetPath = path.resolve(homePath, CACHE_DIR) const storeDir = path.resolve(targetPath, 'node_modules') const { npmName, version } = this.templates.find(item => item.npmName === this.projectInfo.npmName) const pkg = new packages({ targetPath, storeDir, packageName: npmName, packageVersion: version }) if (await pkg.exists()) { //更新 await pkg.update() } else { //初始化 await pkg.install() } }

文件夹中可以看到
通过 spinner 实现命令行 loading 效果
...var Spinner = require('cli-spinner').Spinnerfunction spinnerStart(msg) { var spinner = new Spinner(msg + '.. %s') spinner.setSpinnerString('|/-\\') spinner.start() return spinner}module.exports = { isObject, spinnerStart, sleep }
async downloadTemplate() { .... if (await pkg.exists()) { const spinner = spinnerStart('模板更新中,请稍候') //更新 await pkg.update() spinner.stop(true) } else { //初始化 const spinner = spinnerStart('模板下载中,请稍候') await pkg.install() spinner.stop(true) } }