//后台脚手架
let program = require('commander');
let { promisify } = require('util');
let asyncFiglet = promisify(require('figlet'));
let inquirer = require('inquirer');
let init = require('./init');
// let { chalk } = require('chalk');
// import chalk from 'chalk';
//日志打印
const log = (content) => {
console.log(content);
};
program.version('1.0.0');
program.option('-n --name <type>', 'output name');
//打印logo
async function printLogo() {
let data = await asyncFiglet('v-cli');
log(data);
};
program
.command('create <app-name>')
.description('创建Vue项目')
.action(async(name) => {
await printLogo();
log('准备创建项目...');
let answer = await inquirer.prompt([{
name: 'language',
type: 'list',
message: '请选择语音版本',
choices: ['javascript', 'typescript'],
}])
if (answer.language === 'javascript') {
log('choose js will download')
init(name);
} else {
log('期待中');
}
})
//参数解析,放到最后
program.parse(process.argv);
//项目克隆 init.js
let { promisify } = require('util');
let download = promisify(require('download-git-repo'));
const shell = require('shelljs');
const log = (content) => {
console.log(content);
};
module.exports = async(appName) => {
log(`创建项目${appName}`);
shell.rm("-rf", appName);
log('loading...');
try {
await download('direct:https://github.com/xiezhu/xxx.git', appName, { clone: true });
log(`
下载完成请执行以下命令启动项目:
=====
cd ${appName}
npm install
npm run dev`)
} catch (err) {
log('下载失败', err)
}
}