f-cli
Version:
A simple CLI for creating your projects
58 lines (52 loc) • 1.42 kB
JavaScript
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')
let tplList = require(`${__dirname}/../templates`)
let choices = Object.keys(tplList)
const question = [
{
type: 'list',
name: 'name',
message: 'Template name:',
choices: choices
},
{
type: 'input',
name: 'project',
message: 'Project name:',
validate (val) {
if (val !== '') {
return true
}
return 'Project name is required!'
}
},
{
type: 'input',
name: 'place',
message: 'Where to init the project:',
default: './'
}
]
module.exports = prompt(question).then(({ name, project, place }) => {
const gitPlace = tplList[name]['owner/name']
const gitBranch = tplList[name]['branch']
const spinner = ora('Downloading template...')
spinner.start()
download(`${gitPlace}#${gitBranch}`, `${place}/${project}`, (err) => {
if (err) {
console.log(chalk.red(err))
process.exit()
}
spinner.stop()
console.log(chalk.green('New project has been initialized successfully!\n'))
console.log('To get started:\n')
console.log(' cd %s', project)
console.log(' npm i | yarn i')
console.log(' npm run dev')
})
})