UNPKG

@fuse-oo/cli

Version:

fuse内部脚手架工具

89 lines (75 loc) 2.12 kB
const chalk = require('chalk') const EventEmitter = require('events') const fs = require('fs-extra') const inquirer = require('inquirer') const { log, error, logWithSpinner, clearConsole, stopSpinner, clearLog, exit } = require('../lib/utils/common') const { inquirerHtml } = require('./utils/store') module.exports = class PageCreator extends EventEmitter { constructor(name, context) { super() this.name = name this.context = context } async create(cliOptions = {}) { const fileNameObj = this.getName() const {context} = this await clearLog('cyan', `FUSE-CLI v${require('../package').version}`) logWithSpinner(`✨`, `开始创建页面 ${chalk.yellow(context)}`) // 创建文件夹 await fs.mkdir(context, { recursive: true }) this.emit('creation', { event: 'creating' }) stopSpinner() // 默认 下载 html 对应的模版吗 switch (cliOptions.name) { case 'html': await this.createHtml(cliOptions) break case 'vue': const generateVue = require('./utils/generateVue') await generateVue(context, fileNameObj) break default: await this.createHtml(cliOptions) break } } // 创建 html 模版 async createHtml(cliOptions) { const {context} = this const generateHtml = require('./utils/generateHtml') if (!cliOptions.default) { // 一些基础配置 const defaultOpt = await inquirer.prompt(inquirerHtml) // 合并配置 Object.assign(cliOptions, defaultOpt) } else { // 默认配置 Object.assign(cliOptions, { hasRem: true, libs: [ 'zepto' ] }) } // 动态添加文件 await generateHtml(context, cliOptions) } getName() { const originName = this.name const tailName = originName.slice(1) const upperName = originName.charAt(0).toUpperCase() + tailName const lowerName = originName.charAt(0).toLowerCase() + tailName const folderName = lowerName + tailName + '-sys' return { folderName, upperName, lowerName } } }