UNPKG

1.61 kBJavaScriptView Raw
1const
2 fs = require('fs'),
3 path = require('path'),
4 compileTemplate = require('lodash.template')
5
6const
7 log = require('./helpers/logger')('app:generator')
8 appPaths = require('./app-paths'),
9 quasarFolder = appPaths.resolve.app('.quasar')
10
11class 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 // ensure .quasar folder
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
72module.exports = Generator