UNPKG

1.55 kBJavaScriptView Raw
1const { join } = require('path')
2const fs = require('fs-extra')
3const inquirer = require('inquirer')
4const { info, success, error } = require('../utils/tip')
5const { shell } = require('execa')
6const getSpinner = require('../utils/getSpinner')
7const { setPkgJson } = require('../utils/fire')
8const install = require('../utils/install')
9module.exports = async function() {
10 let projectName = process.argv[3] || ''
11 if (!projectName.trim()) {
12 const { _projectName } = await inquirer.prompt([
13 {
14 type: 'input',
15 message: 'What project do you want to create:',
16 name: '_projectName',
17 validate(val) {
18 return val.trim() ? true : 'you must provide a project name'
19 }
20 }
21 ])
22 projectName = _projectName
23 }
24 await createProject(projectName)
25}
26async function createProject(projectName) {
27 const cwd = process.cwd()
28 const projectPath = join(cwd, projectName)
29 let generateSpinner = getSpinner('Creating... ')
30 try {
31 info(`\n start to create project '${projectName}',wait for a moment`)
32 generateSpinner.start()
33 await shell(
34 `git clone git@git.2dfire-inc.com:danfan/vue-boilerplate.git ${projectName}`
35 )
36 await fs.remove(join(projectPath, '.git'))
37 setPkgJson(projectName)
38 await install(projectPath)
39 generateSpinner.stop()
40 success('\n √ create completed!')
41 success(`\n cd ${projectName}`)
42 success('\n npm start or yarn start')
43 } catch (e) {
44 generateSpinner.stop()
45 error(e)
46 }
47}