@aubyn/electron-vite
Version:
86 lines (77 loc) • 2.74 kB
JavaScript
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;
}
};