UNPKG

@quasar/app-vite

Version:

Quasar Framework App CLI with Vite

121 lines (103 loc) 3.31 kB
import { join, basename } from 'node:path' import { createViteConfig, extendViteConfig, extendEsbuildConfig, createNodeEsbuildConfig } from '../../config-tools.js' import { getBuildSystemDefine } from '../../utils/env.js' async function preloadScript(quasarConf, name) { /** * We will be compiling to commonjs format because Electron requires * ESM preload scripts to run with sandbox disabled, which is a security risk * (Sandboxed preload scripts are run as plain JavaScript without an ESM context) * * However, should we decide going with ESM preload scripts at some point, * we need to change the compiled file extension to .mjs (which is also an Electron requirement) */ const scriptName = basename(name) const cfg = createNodeEsbuildConfig(quasarConf, { compileId: `node-electron-preload-${scriptName}`, format: 'cjs' }) const { appPaths } = quasarConf.ctx cfg.entryPoints = [appPaths.resolve.electron(name)] cfg.outfile = quasarConf.ctx.dev === true ? appPaths.resolve.entry(`preload/${scriptName}.cjs`) : join(quasarConf.build.distDir, `UnPackaged/preload/${scriptName}.cjs`) cfg.define = { ...cfg.define, ...getBuildSystemDefine({ buildEnv: { QUASAR_PUBLIC_FOLDER: quasarConf.ctx.dev === true ? appPaths.publicDir : '.' } }) } return { scriptName, esbuildConfig: await extendEsbuildConfig( cfg, quasarConf.electron, quasarConf.ctx, 'extendElectronPreloadConf' ) } } export const quasarElectronConfig = { vite: async quasarConf => { const cfg = await createViteConfig(quasarConf, { compileId: 'vite-electron' }) if (quasarConf.ctx.prod === true) { cfg.build.outDir = join(quasarConf.build.distDir, 'UnPackaged') } return extendViteConfig(cfg, quasarConf, { isClient: true }) }, // returns a Promise main: quasarConf => { const cfg = createNodeEsbuildConfig(quasarConf, { compileId: 'node-electron-main', format: 'esm' }) const { appPaths } = quasarConf.ctx cfg.entryPoints = [quasarConf.sourceFiles.electronMain] cfg.outfile = quasarConf.ctx.dev === true ? appPaths.resolve.entry('electron-main.js') : join(quasarConf.build.distDir, 'UnPackaged/electron-main.js') cfg.define = { ...cfg.define, ...getBuildSystemDefine({ buildEnv: quasarConf.ctx.dev === true ? { QUASAR_ELECTRON_PRELOAD_FOLDER: appPaths.resolve.entry('preload'), QUASAR_ELECTRON_PRELOAD_EXTENSION: '.cjs', QUASAR_PUBLIC_FOLDER: appPaths.publicDir } : { QUASAR_ELECTRON_PRELOAD_FOLDER: 'preload', QUASAR_ELECTRON_PRELOAD_EXTENSION: '.cjs', QUASAR_PUBLIC_FOLDER: '.' } }) } return extendEsbuildConfig( cfg, quasarConf.electron, quasarConf.ctx, 'extendElectronMainConf' ) }, async preloadScriptList(quasarConf) { const list = [] for (const name of quasarConf.electron.preloadScripts) { list.push(await preloadScript(quasarConf, name)) } return list } } export const modeConfig = quasarElectronConfig