11import type { ForgeConfig } from '@electron-forge/shared-types' ;
2- import { WebpackPlugin } from '@electron-forge/plugin-webpack' ;
32import { MakerZIP } from '@electron-forge/maker-zip' ;
43import { PublisherGithub } from '@electron-forge/publisher-github' ;
4+ import { VitePlugin } from '@electron-forge/plugin-vite' ;
5+ import { FusesPlugin } from '@electron-forge/plugin-fuses' ;
6+ import { FuseV1Options , FuseVersion } from '@electron/fuses' ;
57import { config } from 'dotenv' ;
68
7- import { mainConfig } from './webpack.main.config' ;
8- import { rendererConfig } from './webpack.renderer.config' ;
99import { version } from './package.json' ;
1010
1111config ( ) ;
@@ -15,12 +15,12 @@ const isDev = process.env.IS_DEV === 'true';
1515const forgeConfig : ForgeConfig = {
1616 makers : [ new MakerZIP ( { } , [ 'darwin' ] ) ] ,
1717 packagerConfig : {
18+ asar : true ,
1819 appBundleId : 'app.devkitty' ,
1920 appCategoryType : 'public.app-category.developer-tools' ,
20- appCopyright : 'Copyright © 2023 Devkitty' ,
21+ appCopyright : 'Copyright © 2024 Devkitty' ,
2122 appVersion : version ,
2223 executableName : 'Devkitty' ,
23- // extendInfo: './extend.plist',
2424 icon : './icons/icon' ,
2525 name : 'Devkitty' ,
2626 osxNotarize : ! isDev
@@ -40,21 +40,37 @@ const forgeConfig: ForgeConfig = {
4040 overwrite : true
4141 } ,
4242 plugins : [
43- new WebpackPlugin ( {
44- mainConfig,
45- renderer : {
46- config : rendererConfig ,
47- entryPoints : [
48- {
49- html : './src/rendered/index.html' ,
50- js : './src/rendered/index.tsx' ,
51- name : 'main_window' ,
52- preload : {
53- js : './src/main/ipcs/preload.ts'
54- }
55- }
56- ]
57- }
43+ new VitePlugin ( {
44+ // `build` can specify multiple entry builds, which can be Main process, Preload scripts, Worker process, etc.
45+ // If you are familiar with Vite configuration, it will look really familiar.
46+ build : [
47+ {
48+ config : 'vite.main.config.ts' ,
49+ // `entry` is just an alias for `build.lib.entry` in the corresponding file of `config`.
50+ entry : 'src/main/app.ts'
51+ } ,
52+ {
53+ config : 'vite.preload.config.ts' ,
54+ entry : 'src/main/ipcs/preload.ts'
55+ }
56+ ] ,
57+ renderer : [
58+ {
59+ config : 'vite.renderer.config.ts' ,
60+ name : 'main_window'
61+ }
62+ ]
63+ } ) ,
64+ // Fuses are used to enable/disable various Electron functionality
65+ // at package time, before code signing the application
66+ new FusesPlugin ( {
67+ version : FuseVersion . V1 ,
68+ [ FuseV1Options . RunAsNode ] : false ,
69+ [ FuseV1Options . EnableCookieEncryption ] : true ,
70+ [ FuseV1Options . EnableNodeOptionsEnvironmentVariable ] : false ,
71+ [ FuseV1Options . EnableNodeCliInspectArguments ] : false ,
72+ [ FuseV1Options . EnableEmbeddedAsarIntegrityValidation ] : true ,
73+ [ FuseV1Options . OnlyLoadAppFromAsar ] : true
5874 } )
5975 ] ,
6076 publishers : [
0 commit comments