UNPKG

@aubyn/electron-vite

Version:
86 lines (77 loc) 2.74 kB
const isPro = process.env.NODE_ENV === 'production'; const fs = require('fs'); const path = require('path'); const { loadConfigFromFile, mergeConfig } = require('vite'); const rootPath = process.cwd(); const rendererConfigPath = joinRootPath('vite.config.js'); const hasRendererConfig = fs.existsSync(rendererConfigPath); const mainConfigPath = joinRootPath('vite.main.config.js'); const hasMainConfig = fs.existsSync(mainConfigPath); const preloadConfigPath = joinRootPath('vite.preload.config.js'); const hasPreloadConfig = fs.existsSync(preloadConfigPath); const rootPackage = readJsonFile(joinRootPath('package.json')); function joinRootPath(...argvs) { return path.join(rootPath, ...argvs); } function readJsonFile(filePath) { return JSON.parse(fs.readFileSync(filePath, { encoding: 'utf-8' })); } function resolveDefaultConfig(key) { return path.join(__dirname, `./vite.${key}.config.js`); } function extractRootPackage() { const dependencies = rootPackage.dependencies; let electronIncludes = rootPackage.electronIncludes || []; rootPackage.dependencies = electronIncludes.reduce((collect, name) => { collect[name] = dependencies[name]; return collect; }, {}); fs.writeFileSync(joinRootPath('dist_electron/bundled/package.json'), JSON.stringify(rootPackage, null, 2)); } const serve_dev_env = { command: 'serve', mode: 'development' }; const build_dev_env = { command: 'build', mode: 'development' }; const build_pro_env = { command: 'build', mode: 'production' }; module.exports = { isPro, joinRootPath, rootPath, rootPackage, extractRootPackage, readJsonFile, async getMainConfig() { const env = isPro ? build_pro_env : build_dev_env; let { config } = await loadConfigFromFile(env, resolveDefaultConfig('main')); if (hasMainConfig) { const user = await loadConfigFromFile(env, mainConfigPath); config = mergeConfig(config, user.config); } return config; }, async getPreloadConfig() { const env = isPro ? build_pro_env : build_dev_env; let { config } = await loadConfigFromFile(env, resolveDefaultConfig('preload')); if (hasPreloadConfig) { const user = await loadConfigFromFile(env, preloadConfigPath); config = mergeConfig(config, user.config); } return config; }, async getRendererConfig() { const env = isPro ? build_pro_env : serve_dev_env; let { config } = await loadConfigFromFile(env, resolveDefaultConfig('renderer')); if (hasRendererConfig) { const user = await loadConfigFromFile(env, rendererConfigPath); config = mergeConfig(config, user.config); } return config; } };