diff --git a/packages/main/index.ts b/packages/main/index.ts index 7207ffc..71002f5 100644 --- a/packages/main/index.ts +++ b/packages/main/index.ts @@ -27,14 +27,14 @@ async function createWindow() { if (app.isPackaged) { win.loadFile(join(__dirname, '../renderer/index.html')) } else { - const pkg = await import('../../package.json') - const url = `http://${pkg.env.HOST || '127.0.0.1'}:${pkg.env.PORT}` + // 🚧 Use ['ENV_NAME'] avoid vite:define plugin + const url = `http://${process.env['VITE_DEV_SERVER_HOST']}:${process.env['VITE_DEV_SERVER_PORT']}` win.loadURL(url) win.webContents.openDevTools() } - // Test active push message to Renderer-process. + // Test active push message to Renderer-process win.webContents.on('did-finish-load', () => { win?.webContents.send('main-process-message', (new Date).toLocaleString()) }) diff --git a/scripts/vite.config.mjs b/packages/main/vite.config.ts similarity index 57% rename from scripts/vite.config.mjs rename to packages/main/vite.config.ts index 0b94b08..c415c0c 100644 --- a/scripts/vite.config.mjs +++ b/packages/main/vite.config.ts @@ -1,20 +1,17 @@ -import { builtinModules, createRequire } from 'module' +import { builtinModules } from 'module' import { defineConfig } from 'vite' - -const require = createRequire(import.meta.url) -const pkg = require('../package.json') +import pkg from '../../package.json' export default defineConfig({ - mode: process.env.NODE_ENV, - // root: [path], + root: __dirname, build: { - // outDir: [path], + outDir: '../../dist/main', lib: { entry: 'index.ts', formats: ['cjs'], fileName: () => '[name].cjs', }, - minify: process.env.NODE_ENV === 'production', + minify: process.env./* from mode option */NODE_ENV === 'production', emptyOutDir: true, rollupOptions: { external: [ diff --git a/packages/preload/vite.config.ts b/packages/preload/vite.config.ts new file mode 100644 index 0000000..3f3ddce --- /dev/null +++ b/packages/preload/vite.config.ts @@ -0,0 +1,24 @@ +import { builtinModules } from 'module' +import { defineConfig } from 'vite' +import pkg from '../../package.json' + +export default defineConfig({ + root: __dirname, + build: { + outDir: '../../dist/preload', + lib: { + entry: 'index.ts', + formats: ['cjs'], + fileName: () => '[name].cjs', + }, + minify: process.env./* from mode option */NODE_ENV === 'production', + emptyOutDir: true, + rollupOptions: { + external: [ + 'electron', + ...builtinModules, + ...Object.keys(pkg.dependencies || {}), + ], + }, + }, +}) diff --git a/scripts/build.mjs b/scripts/build.mjs index 2e538fb..cb967ca 100644 --- a/scripts/build.mjs +++ b/scripts/build.mjs @@ -1,25 +1,5 @@ -process.env.NODE_ENV = 'production' - -import { dirname, join } from 'path' -import { fileURLToPath } from 'url' import { build } from 'vite' -const __dirname = dirname(fileURLToPath(import.meta.url)) - -await build({ - configFile: 'scripts/vite.config.mjs', - root: join(__dirname, '../packages/main'), - build: { - outDir: '../../dist/main', - }, -}) - -await build({ - configFile: 'scripts/vite.config.mjs', - root: join(__dirname, '../packages/preload'), - build: { - outDir: '../../dist/preload', - }, -}) - +await build({ configFile: 'packages/main/vite.config.ts' }) +await build({ configFile: 'packages/preload/vite.config.ts' }) await build({ configFile: 'packages/renderer/vite.config.ts' }) diff --git a/scripts/watch.mjs b/scripts/watch.mjs index fd7f1cc..d578f53 100644 --- a/scripts/watch.mjs +++ b/scripts/watch.mjs @@ -1,42 +1,34 @@ -process.env.NODE_ENV = 'development' - -import { fileURLToPath } from 'url' -import { join, dirname } from 'path' -import { createRequire } from 'module' import { spawn } from 'child_process' import { createServer, build } from 'vite' import electron from 'electron' -const __dirname = dirname(fileURLToPath(import.meta.url)) -const require = createRequire(import.meta.url) -const pkg = require('../package.json') - /** - * @type {() => Promise} + * @type {(server: import('vite').ViteDevServer) => Promise} */ -function watchMain() { +function watchMain(server) { /** * @type {import('child_process').ChildProcessWithoutNullStreams | null} */ let electronProcess = null + const address = server.httpServer.address() + const env = Object.assign(process.env, { + VITE_DEV_SERVER_HOST: address.address, + VITE_DEV_SERVER_PORT: address.port, + }) return build({ - configFile: 'scripts/vite.config.mjs', - root: join(__dirname, '../packages/main'), - build: { - outDir: '../../dist/main', - watch: true, - }, + configFile: 'packages/main/vite.config.ts', + mode: 'development', plugins: [{ name: 'electron-main-watcher', writeBundle() { electronProcess && electronProcess.kill() - electronProcess = spawn(electron, ['.'], { - stdio: 'inherit', - env: Object.assign(process.env, pkg.env), - }) + electronProcess = spawn(electron, ['.'], { stdio: 'inherit', env }) }, }], + build: { + watch: true, + }, }) } @@ -45,18 +37,17 @@ function watchMain() { */ function watchPreload(server) { return build({ - configFile: 'scripts/vite.config.mjs', - root: join(__dirname, '../packages/preload'), - build: { - outDir: '../../dist/preload', - watch: true, - }, + configFile: 'packages/preload/vite.config.ts', + mode: 'development', plugins: [{ name: 'electron-preload-watcher', writeBundle() { server.ws.send({ type: 'full-reload' }) }, }], + build: { + watch: true, + }, }) } @@ -65,4 +56,4 @@ const server = await createServer({ configFile: 'packages/renderer/vite.config.t await server.listen() await watchPreload(server) -await watchMain() +await watchMain(server)