From 7b92b312d6af71adb0f8231459ee08fac16d9423 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8D=89=E9=9E=8B=E6=B2=A1=E5=8F=B7?= <308487730@qq.com> Date: Mon, 1 Nov 2021 16:50:05 +0800 Subject: [PATCH] feature: main,preload build --- main/index.ts | 24 +++++++++++++++++++ main/vite.config.ts | 0 preload/index.main.ts | 1 + preload/index.win1.ts | 1 + preload/vite.config.ts | 0 scripts/build.ts | 52 ++++++++++++++++++++++++++++++++++++++++ scripts/rollup.config.ts | 29 ++++++++++++++++++++++ scripts/utils.ts | 1 + 8 files changed, 108 insertions(+) delete mode 100644 main/vite.config.ts delete mode 100644 preload/vite.config.ts create mode 100644 scripts/rollup.config.ts diff --git a/main/index.ts b/main/index.ts index e69de29..4e3c321 100644 --- a/main/index.ts +++ b/main/index.ts @@ -0,0 +1,24 @@ +import { app, BrowserWindow } from 'electron' + +const WINDOWS: Record = { + main: null, + win1: null, +} + +function mainWin() { + WINDOWS.main = new BrowserWindow({ + title: 'Main window', + }) + + if (app.isPackaged) { + WINDOWS.main.loadFile('') + } else { + WINDOWS.main.loadURL(`http://127.0.0.1:${process.env.PORT}`) + } + +} + +app.whenReady().then(mainWin) +app.on('window-all-closed', () => { + Object.keys(WINDOWS).forEach((key) => WINDOWS[key] = null) +}) diff --git a/main/vite.config.ts b/main/vite.config.ts deleted file mode 100644 index e69de29..0000000 diff --git a/preload/index.main.ts b/preload/index.main.ts index e69de29..12ed55a 100644 --- a/preload/index.main.ts +++ b/preload/index.main.ts @@ -0,0 +1 @@ +console.log('index.main.ts') \ No newline at end of file diff --git a/preload/index.win1.ts b/preload/index.win1.ts index e69de29..562867d 100644 --- a/preload/index.win1.ts +++ b/preload/index.win1.ts @@ -0,0 +1 @@ +console.log('index.win1.ts') \ No newline at end of file diff --git a/preload/vite.config.ts b/preload/vite.config.ts deleted file mode 100644 index e69de29..0000000 diff --git a/scripts/build.ts b/scripts/build.ts index e69de29..1bbcaff 100644 --- a/scripts/build.ts +++ b/scripts/build.ts @@ -0,0 +1,52 @@ +import { join } from 'path' +import { readdirSync } from 'fs' +import { OutputOptions, rollup, RollupOptions, RollupOutput } from 'rollup' +import { optionsFactory } from './rollup.config' + +const TAG = '[build.ts]' + +function mainOptions() { + return optionsFactory({ + input: join(__dirname, '../main/index.ts'), + output: { + dir: 'dist/main', + }, + }) +} + +function preloadOptions() { + const dirs = readdirSync(join(__dirname, '../preload')) + const inputs = dirs.filter(name => /^index\..+\.ts$/.test(name)) + + return optionsFactory({ + input: inputs.map(input => join(__dirname, '../preload', input)), + output: { + dir: 'dist/preload', + }, + }) +} + +async function doBuild(options: RollupOptions): Promise<[Error | null, RollupOutput | null]> { + try { + const build = await rollup(options) + const output = await build.write(options.output as OutputOptions) + + return [null, output] + } catch (error: any) { + return [error, null] + } +} + +// build +[mainOptions(), preloadOptions()].forEach(options => { + doBuild(options) + .then(([err, output]) => { + if (err) { + console.error(err) + process.exit(1) + } + output?.output.forEach(out => { + console.log(TAG, `Build successed -- ${(out as any).facadeModuleId}`) + }) + }) +}) diff --git a/scripts/rollup.config.ts b/scripts/rollup.config.ts new file mode 100644 index 0000000..f5064aa --- /dev/null +++ b/scripts/rollup.config.ts @@ -0,0 +1,29 @@ +import { builtinModules } from 'module' +import { RollupOptions } from 'rollup' +import commonjs from '@rollup/plugin-commonjs' +import { nodeResolve } from '@rollup/plugin-node-resolve' +// import typescript from '@rollup/plugin-typescript' +import swc from 'rollup-plugin-swc' + +function optionsFactory(options: RollupOptions): RollupOptions { + return { + input: options.input, + output: { + name: '[name].js', + format: 'cjs', + ...options.output, + }, + plugins: [ + commonjs(), + nodeResolve(), + // typescript(), + swc(), + ], + external: [ + 'electron', + ...builtinModules, + ], + } +} + +export { optionsFactory } diff --git a/scripts/utils.ts b/scripts/utils.ts index e69de29..076aafb 100644 --- a/scripts/utils.ts +++ b/scripts/utils.ts @@ -0,0 +1 @@ +import { join } from 'path'