模板下载
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').Spinner
function 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)
}
}