vue2-s-cli
Version:
脚手架
50 lines (44 loc) • 1.58 kB
JavaScript
const yargs = require('yargs');
const fs = require('fs');
const path = require('path');
const inquirer = require('inquirer');
const fse = require('fs-extra');
// 模板路径
const TEMPLATE_PATH = path.join(__dirname, '../template');
yargs.command(
'create <project-name>',
'新建一个项目',
function (yargs) {
return yargs.positional('project-name', {
describe: '项目名称',
type: 'string'
});
},
async function (argv) {
const { 'project-name': projectName } = argv;
const targetDir = path.join(process.cwd(), projectName);
// 检查目录是否已存在
if (fs.existsSync(targetDir)) {
console.log('\x1B[31m%s\x1B[0m', `目录 ${projectName} 已存在!`)
return;
}
// 创建项目逻辑
try {
console.log(`开始创建项目【${projectName}】...`);
// 创建目录
fs.mkdirSync(targetDir, { recursive: true });
// 复制模板文件
console.log('\x1B[32m%s\x1B[0m', '正在复制模板文件...');
await fse.copy(TEMPLATE_PATH, targetDir);
console.log('\x1B[32m%s\x1B[0m', '项目创建成功!')
console.log('\x1B[32m%s\x1B[0m', `进入项目目录: cd ${projectName}`);
console.log('\x1B[32m%s\x1B[0m', `安装依赖: npm install`);
console.log('\x1B[32m%s\x1B[0m', `启动开发服务器: npm run dev `);
} catch (error) {
console.log('\x1B[31m%s\x1B[0m', `项目创建失败`)
console.error(error);
process.exit(1);
}
}
).argv;