UNPKG

91admin-cli

Version:

A simple CLI for creating your projects from own Git server

77 lines (68 loc) 1.99 kB
const { prompt } = require('inquirer') const { writeFile } = require('fs') const { listTable } = require(`${__dirname}/../utils`) const { resolve } = require('path') const chalk = require('chalk') const download = require('download-git-repo') const ora = require('ora') // var spawn = require('child_process').spawn; const spawn = require('cross-spawn'); let tplList = require(`${__dirname}/../templates`) const question = [ { type: 'input', name: 'name', message: '脚手架名称:', validate (val) { if (tplList[val]) { return true } else if (val === '') { return '名字不能为空' } else if (!tplList[val]) { return '该脚手架不存在.' } } }, { type: 'input', name: 'project', message: '项目名称:', validate (val) { if (val !== '') { return true } return '项目名称不能为空!' } }, { type: 'input', name: 'place', message: '项目所在目录:', default: './' } ] module.exports = prompt(question).then(({ name, project, place }) => { const gitPlace = tplList[name]['owner/name'] const gitBranch = tplList[name]['branch'] const gitClone = tplList[name]['clone'] const spinner = ora('Downloading... ') spinner.start() download(`direct:${gitPlace}#${gitBranch}`, `${place}/${project}`, {clone: true}, (err) => { if (err) { console.log(chalk.red(err)) process.exit() } var process = spawn('yarn', [], {cwd: `${place}/${project}`}); process.stdout.on('data', (data) => { console.log(`stdout: ${data}`); }); process.stderr.on('data', (data) => { console.log(`stderr: ${data}`); }); process.on('close', function (status) { if (status != 0) console.log(chalk.red((new Error("'npm install' failed with status, please exec 'npm install' again " + status)))) spinner.stop() console.log(chalk.green('项目创建成功!')) }); }) })