import { MakerDeb } from "@electron-forge/maker-deb"; import { MakerDMG } from "@electron-forge/maker-dmg"; import { MakerSquirrel } from "@electron-forge/maker-squirrel"; import { MakerZIP } from "@electron-forge/maker-zip"; import { AutoUnpackNativesPlugin } from "@electron-forge/plugin-auto-unpack-natives"; import { FusesPlugin } from "@electron-forge/plugin-fuses"; import { VitePlugin } from "@electron-forge/plugin-vite"; import { PublisherGithub } from "@electron-forge/publisher-github"; import type { ForgeConfig } from "@electron-forge/shared-types"; import { FuseV1Options, FuseVersion } from "@electron/fuses"; import setLanguages from "electron-packager-languages"; import packageJSON from "../package.json"; export default { packagerConfig: { name: packageJSON.name, appBundleId: "com.bismillahdao.ziya", appCategoryType: "public.app-category.utilities", appCopyright: `Copyright (C) ${new Date().getFullYear()} ${packageJSON.author.name}`, icon: "public/favicon", asar: { unpack: "**/node_modules/{sharp,@img}/**/*" }, osxSign: {}, ignore: [ /^\/(?!node_modules|package\.json|.vite)/ ], afterCopy: [setLanguages(["en", "en-US", "en-GB"])] }, rebuildConfig: { onlyModules: ["sharp"], force: true }, makers: [ new MakerZIP({}), // Windows new MakerSquirrel({ usePackageJson: true, iconUrl: "https://raw.githubusercontent.com/rizilab/ziya/main/public/favicon.ico", setupIcon: "public/favicon.ico" }), // macOS new MakerDMG({ overwrite: true, format: "ULFO", icon: "public/favicon.icns" }), // Linux new MakerDeb({ options: { categories: ["Utility"], icon: "public/favicon.png" } }) ], plugins: [ new VitePlugin({ // `build` can specify multiple entry builds, which can be Main process, Preload scripts, Worker process, etc. // If you are familiar with Vite configuration, it will look really familiar. build: [ { entry: "electron/main.ts", config: ".config/vite.forge.ts", target: "main" }, { entry: "electron/preload.ts", config: ".config/vite.forge.ts", target: "preload" } ], renderer: [] // Nuxt app is generated no need to specify renderer }), // Fuses are used to enable/disable various Electron functionality // at package time, before code signing the application new FusesPlugin({ version: FuseVersion.V1, [FuseV1Options.RunAsNode]: false, [FuseV1Options.EnableCookieEncryption]: true, [FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false, [FuseV1Options.EnableNodeCliInspectArguments]: false, [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true, [FuseV1Options.OnlyLoadAppFromAsar]: true }), new AutoUnpackNativesPlugin({}) ], publishers: [ new PublisherGithub({ repository: { owner: "Rizary", name: packageJSON.name }, prerelease: true }) ] } satisfies ForgeConfig;