1 | const fs = require('fs-extra')
|
2 | const { join } = require('path')
|
3 | const inquirer = require('inquirer')
|
4 | const { shell } = require('execa')
|
5 | const getSpinner = require('../utils/getSpinner')
|
6 | const { isPageNameExists } = require('../utils/isExists')
|
7 | const { success, error, warning } = require('../utils/tip')
|
8 | const { isFireProject, setFireConfig } = require('../utils/fire')
|
9 | const { getPageTplList, delPageTplDir } = require('../utils/pageTpl')
|
10 | const getPageTplPath = require('../utils/getPageTplPath')
|
11 | module.exports = async function() {
|
12 |
|
13 |
|
14 |
|
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 | }
|
33 | async 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 | }
|