UNPKG

@quasar/app-vite

Version:

Quasar Framework App CLI with Vite

60 lines (50 loc) 1.44 kB
import { readFileSync } from 'node:fs' import fse from 'fs-extra' import compileTemplate from 'lodash/template.js' export class EntryFilesGenerator { #templateFiles // templated #regularFiles // copied as-is constructor(ctx) { const regularFiles = [] const templateFiles = [ 'app.js', 'client-entry.js', 'client-prefetch.js', 'quasar-user-options.js' ] if (ctx.mode.ssr) { templateFiles.push( 'server-entry.js', 'ssr-middlewares.js', `ssr-${ctx.dev ? 'dev' : 'prod'}-webserver.js` ) } else if (ctx.mode.bex) { regularFiles.push('bex-app.js') } const { appPaths } = ctx this.#templateFiles = templateFiles.map(file => { const content = readFileSync( appPaths.resolve.cli(`templates/entry/${file}`), 'utf-8' ) return { template: compileTemplate(content), dest: appPaths.resolve.entry(file) } }) this.#regularFiles = regularFiles.map(file => ({ src: appPaths.resolve.cli(`templates/entry/${file}`), dest: appPaths.resolve.entry(file) })) } generate(quasarConf) { this.#templateFiles.forEach(file => { fse.ensureFileSync(file.dest) fse.writeFileSync(file.dest, file.template(quasarConf), 'utf-8') }) this.#regularFiles.forEach(file => { fse.ensureFileSync(file.dest) fse.copySync(file.src, file.dest) }) } }