1 | const
|
2 | fs = require('fs'),
|
3 | path = require('path'),
|
4 | compileTemplate = require('lodash.template')
|
5 |
|
6 | const
|
7 | log = require('./helpers/logger')('app:generator')
|
8 | appPaths = require('./app-paths'),
|
9 | quasarFolder = appPaths.resolve.app('.quasar')
|
10 |
|
11 | class Generator {
|
12 | constructor (quasarConfig) {
|
13 | const { ctx, preFetch } = quasarConfig.getBuildConfig()
|
14 |
|
15 | this.alreadyGenerated = false
|
16 | this.quasarConfig = quasarConfig
|
17 |
|
18 | const paths = [
|
19 | 'app.js',
|
20 | 'client-entry.js',
|
21 | 'import-quasar.js'
|
22 | ]
|
23 |
|
24 | if (preFetch) {
|
25 | paths.push('client-prefetch.js')
|
26 | }
|
27 | if (ctx.mode.ssr) {
|
28 | paths.push('server-entry.js')
|
29 | }
|
30 |
|
31 | this.files = paths.map(file => {
|
32 | const
|
33 | content = fs.readFileSync(
|
34 | appPaths.resolve.cli(`templates/entry/${file}`),
|
35 | 'utf-8'
|
36 | ),
|
37 | filename = path.basename(file)
|
38 |
|
39 | return {
|
40 | filename,
|
41 | dest: path.join(quasarFolder, filename),
|
42 | template: compileTemplate(content)
|
43 | }
|
44 | })
|
45 | }
|
46 |
|
47 | build () {
|
48 | log(`Generating Webpack entry point`)
|
49 | const data = this.quasarConfig.getBuildConfig()
|
50 |
|
51 |
|
52 | if (!fs.existsSync(quasarFolder)){
|
53 | fs.mkdirSync(quasarFolder)
|
54 | }
|
55 |
|
56 | this.files.forEach(file => {
|
57 | fs.writeFileSync(file.dest, file.template(data), 'utf-8')
|
58 | })
|
59 |
|
60 | if (!this.alreadyGenerated) {
|
61 | const then = Date.now() / 1000 - 120
|
62 |
|
63 | this.files.forEach(file => {
|
64 | fs.utimes(file.dest, then, then, function (err) { if (err) throw err })
|
65 | })
|
66 |
|
67 | this.alreadyGenerated = true
|
68 | }
|
69 | }
|
70 | }
|
71 |
|
72 | module.exports = Generator
|