express-mvc-cli
Version:
express mvc 框架
76 lines (74 loc) • 2.5 kB
JavaScript
var program = require('commander');
const download = require('git-clone');
const handlebars = require('handlebars');
const inquirer = require('inquirer');
const fs = require('fs');
const templates = {
'web': {
url: 'https://gitee.com/liu-xu-xu/template.git',
description: '前端模板'
},
'server': {
url: 'https://gitee.com/liu-xu-xu/erp_pro_server.git',
description: '后端模板'
}
}
program
.version('1.0.0')
program
.command('create <project>')
.description('初始化项目')
.action(function (project) {
inquirer.prompt([
{
type: 'input',
name: 'name',
message: `请输入项目名称(${project})`
},
{
type: 'input',
name: 'description',
message: '请输入项目描述'
},
{
type: 'input',
name: 'author',
message: '请输入项目作者'
}
]).then((result) => {
download('https://gitee.com/liu-xu-xu/express-template.git', project, { clone: true }, (err) => {
if (err) return;
if (result.name == '' || !result.name) result.name = project;
const packageContent = fs.readFileSync(`${project}/package.json`, 'utf-8');
const packageResult = handlebars.compile(packageContent)(result);
fs.writeFileSync(`${project}/package.json`, packageResult);
function delDir(p) {
var list = fs.readdirSync(p)
list.forEach((v, i) => {
var url = p + '/' + v
var stats = fs.statSync(url)
if (stats.isFile()) {
fs.unlinkSync(url)
} else {
arguments.callee(url)
}
})
fs.rmdirSync(p)
}
delDir(`${project}/.git`);
console.log('项目创建成功')
})
})
});
// program
// .command('list')
// .description('查看所有模板')
// .action(() => {
// for (let key in templates) {
// console.log(
// `\n ${key} ${templates[key].description}`,
// )
// }
// })
program.parse(process.argv);