index.js
根
/
index.js
import program from 'commander';
import inquirer from 'inquirer';
import downloadGit from 'download-git-repo';
import ora from 'ora';
import chalk from 'chalk';
import fs from 'fs/promises';
// import webpackDev from './src/webpack.dev.js';
const projectList = [
{ name: 'dai-vue-m', value: 'http://git.daicms.com/dai-vue-temp-m.git#master' },
{ name: 'dai-web-w', value: 'http://git.daicms.com/dai-vue-temp-m.git#master' }
];
//下载项目
let downloadProject = function (answers) {
return new Promise(function (a, b) {
const spinner = ora('下载中...');
spinner.start();
downloadGit('direct:' + answers.url, './', { clone: true }, async (err) => {
if (err) {
spinner.fail();
// console.log(chalk.red(err));
b(err);
} else {
spinner.succeed();
const fileName = './package.json';
const meta = {
name: answers.name,
description: answers.description,
author: answers.author
};
let content = await fs.readFile(fileName);
content = JSON.parse(content.toString());
Object.assign(content, meta);
await fs.writeFile(fileName, JSON.stringify(content, null, 4));
console.log(chalk.green('项目创建成功'));
a();
}
});
});
};
let runDev = function () {
// debugger
// var webpackDev = require('./src/webpack.dev.js');
// var config = require(__dirname+'/build/config.js');
// webpackDev(config);
};
let exec = function () {
return new Promise(async function (a, b) {
program
.command('init')
// .alias('i')
// .description('初始化')
// .option('-x, --xxx', 'xxx') // 有参数时使用
.action(async () => {
let answers = await inquirer.prompt([
{
name: 'name',
message: '请输入项目名称'
},
{
name: 'description',
message: '请输入项目描述(可为空)',
default: 'description'
},
{
name: 'author',
message: '请输入作者名称(可为空)',
default: 'description'
},
{
type: 'list',
name: 'url',
message: '请选择项目类型',
choices: projectList
}
]);
console.log(answers);
//判断目录是否为空
let list = await fs.readdir('./');
if (list.length > 0) {
console.error(chalk.redBright('目录不为空,创建失败'));
return;
}
await downloadProject(answers);
});
program
.command('add')
// .alias('i')
// .description('初始化')
// .option('-x, --xxx', 'xxx') // 有参数时使用
.action(async () => {
let answers = await inquirer.prompt([
{
type: 'list',
name: 'url',
message: '请选择模块类型',
choices: [{ name: '独立模块', value: 'http://git.daicms.com/dai-vue-temp-m.git#master' }]
}
]);
console.log(answers);
// await downloadProject(answers);
});
program.command('dev').action(async () => {
console.log('启动 dev 服务');
runDev();
});
program.command('build').action(async () => {
console.log('启动 build 服务');
});
program.parse(process.argv);
});
};
exec()
.then(function () {
console.log('运行结束,退出');
process.exit(0);
})
.catch(function (ex) {
console.error(ex);
debugger;
process.exit(0);
});