UNPKG

2.55 kBJavaScriptView Raw
1const fs = require('fs-extra')
2const { join } = require('path')
3const inquirer = require('inquirer')
4const { shell } = require('execa')
5const getSpinner = require('../utils/getSpinner')
6const { isPageNameExists } = require('../utils/isExists')
7const { success, error, warning } = require('../utils/tip')
8const { isFireProject, setFireConfig } = require('../utils/fire')
9const { getPageTplList, delPageTplDir } = require('../utils/pageTpl')
10const getPageTplPath = require('../utils/getPageTplPath')
11module.exports = async function() {
12 // if (!isFireProject()) {
13 // return warning(
14 // 'This is not a project that created by 2dfire-cli,so you cannot use the command'
15 // )
16 // }
17 let pageName = process.argv[3] || ''
18 if (!pageName.trim()) {
19 const { _pageName } = await inquirer.prompt([
20 {
21 type: 'input',
22 message: 'What page do you want to create:',
23 name: '_pageName',
24 validate(val) {
25 return val.trim() ? true : 'You must provide a page name'
26 }
27 }
28 ])
29 pageName = _pageName
30 }
31 await createPage(pageName)
32}
33async function createPage(pageName) {
34 const cwd = process.cwd()
35 if (isPageNameExists(pageName)) {
36 return warning(`The page ${pageName} already existed`)
37 }
38 const createSpinner = getSpinner('creating... ')
39 createSpinner.start()
40 try {
41 await delPageTplDir()
42 await shell(
43 `git clone git@git.2dfire-inc.com:danfan/vue-page-boilerplate.git ${join(
44 __dirname,
45 '../template'
46 )}`
47 )
48 const list = getPageTplList()
49 createSpinner.stop()
50 if (!list.length) {
51 await delPageTplDir()
52 error(
53 "No any page template,you can create template in you local 'template' directory"
54 )
55 }
56 let { pageTpl } = await inquirer.prompt([
57 {
58 default: 'router',
59 type: 'list',
60 message: `Pick the page template for the page`,
61 name: 'pageTpl',
62 choices: list
63 }
64 ])
65 const targetPagePath = join(cwd, 'page')
66 const targetSrcPath = join(cwd, 'src')
67 const { __html, __src } = getPageTplPath(pageTpl)
68 await fs.copy(__html, join(targetPagePath, pageName + '.html'))
69 await fs.copy(__src, join(targetSrcPath, pageName))
70 setFireConfig(pageName)
71 await shell('git add .')
72 await delPageTplDir()
73 success(`\n √ The page '${pageName}' create completed!`)
74 } catch (e) {
75 createSpinner.stop()
76 await delPageTplDir()
77 error(e)
78 }
79}