1 | const pathConfig = require('config').get('path')
|
2 | const projectConfig = require('config').get('project')
|
3 | const path = require('path')
|
4 | const glob = require('glob')
|
5 | const fs = require('fs')
|
6 | const fse = require('fs-extra')
|
7 | const Mustache = require('mustache')
|
8 |
|
9 | const {
|
10 | pathConfig: { template: tempatePath }
|
11 | } = require('./config.js')
|
12 |
|
13 | function createPage (folder) {
|
14 | if (typeof folder !== 'string') {
|
15 | return console.warn(`[create-page]: ${folder} must be string`)
|
16 | }
|
17 |
|
18 | if (fs.existsSync(path.resolve(pathConfig.pages, folder))) {
|
19 | return console.warn(`[create-page]: ${folder} is exists`)
|
20 | }
|
21 |
|
22 | try {
|
23 | glob
|
24 | .sync(tempatePath + '/page/**')
|
25 | .filter(v => {
|
26 | let stat = fs.statSync(v)
|
27 | return !stat.isDirectory()
|
28 | })
|
29 | .forEach(v => {
|
30 | let filepath = v.slice((tempatePath + '/page').length)
|
31 | let targetfile = path.join(
|
32 | pathConfig.pages,
|
33 | `./${folder}`,
|
34 | `./${filepath}`
|
35 | )
|
36 | if (filepath === '/config.js') {
|
37 | let config = fse.readFileSync(v, 'utf-8')
|
38 | let content = Mustache.render(config, {
|
39 | project: projectConfig.name,
|
40 | folder,
|
41 | html: projectConfig.html
|
42 | })
|
43 | fse.outputFile(targetfile, content, 'utf-8')
|
44 | } else {
|
45 | fse.ensureFileSync(targetfile)
|
46 | fse.copyFileSync(v, targetfile)
|
47 | }
|
48 | })
|
49 | console.log(`创建完成:「${folder}」,请愉快的 CODING 吧`)
|
50 | } catch (e) {
|
51 | console.error(`创建异常 ${folder}:`)
|
52 | console.error(e)
|
53 | }
|
54 | }
|
55 |
|
56 | module.exports = createPage
|