UNPKG

vue2-s-cli

Version:

脚手架

50 lines (44 loc) 1.58 kB
#!/usr/bin/env node 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;