/ forge.config.ts
forge.config.ts
 1  import type { ForgeConfig } from '@electron-forge/shared-types';
 2  import { MakerSquirrel } from '@electron-forge/maker-squirrel';
 3  import { MakerZIP } from '@electron-forge/maker-zip';
 4  import { MakerDMG } from '@electron-forge/maker-dmg';
 5  import { MakerDeb } from '@electron-forge/maker-deb';
 6  import { MakerRpm } from '@electron-forge/maker-rpm';
 7  import { PublisherGithub } from '@electron-forge/publisher-github';
 8  import { VitePlugin } from '@electron-forge/plugin-vite';
 9  import { FusesPlugin } from '@electron-forge/plugin-fuses';
10  import { FuseV1Options, FuseVersion } from '@electron/fuses';
11  import path from 'path';
12  
13  const config: ForgeConfig = {
14    packagerConfig: {
15      asar: true,
16      executableName: 'gnosis',
17      icon: path.resolve(__dirname, 'Icon/macos/AppIcon'),
18      ...(process.env.APPLE_TEAM_ID
19        ? {
20            osxSign: {
21              optionsForFile: () => ({
22                entitlements: path.resolve(__dirname, 'entitlements.plist'),
23                entitlementsInherit: path.resolve(__dirname, 'entitlements.child.plist'),
24              }),
25            },
26            osxNotarize: {
27              appleId: process.env.APPLE_ID ?? '',
28              appleIdPassword: process.env.APPLE_ID_PASSWORD ?? '',
29              teamId: process.env.APPLE_TEAM_ID,
30            },
31          }
32        : {}),
33    },
34    rebuildConfig: {},
35    makers: [
36      new MakerSquirrel({
37        authors: 'Oddur Magnusson',
38        iconUrl: 'https://raw.githubusercontent.com/oddur/gnosis/main/Icon/web/favicon.ico',
39        setupIcon: path.resolve(__dirname, 'Icon/web/favicon.ico'),
40      }),
41      new MakerZIP({}, ['darwin']),
42      new MakerDMG({ name: 'Gnosis' }),
43      new MakerDeb({}),
44      new MakerRpm({ options: { license: 'MIT' } }),
45    ],
46    publishers: [
47      new PublisherGithub({
48        repository: { owner: 'oddur', name: 'gnosis' },
49        draft: false,
50        prerelease: false,
51      }),
52    ],
53    plugins: [
54      new VitePlugin({
55        build: [
56          { entry: 'src/main.ts', config: 'vite.main.config.ts', target: 'main' },
57          { entry: 'src/preload.ts', config: 'vite.preload.config.ts', target: 'preload' },
58        ],
59        renderer: [{ name: 'main_window', config: 'vite.renderer.config.ts' }],
60      }),
61      new FusesPlugin({
62        version: FuseVersion.V1,
63        [FuseV1Options.RunAsNode]: false,
64        [FuseV1Options.EnableCookieEncryption]: true,
65        [FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false,
66        [FuseV1Options.EnableNodeCliInspectArguments]: false,
67        [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true,
68        [FuseV1Options.OnlyLoadAppFromAsar]: true,
69      }),
70    ],
71  };
72  
73  export default config;