Closed
Description
Pre-flight checklist
- I have read the contribution documentation for this project.
- I agree to follow the code of conduct that this project uses.
- I have searched the issue tracker for a bug that matches the one I want to file, without success.
Forge version
7.7.0
Electron version
35.0.1
Operating system
mac 15.2
Last known working Forge version
No response
Expected behavior
forge.config.ts
import type { ForgeConfig } from '@electron-forge/shared-types';
import { MakerSquirrel } from '@electron-forge/maker-squirrel';
import { MakerZIP } from '@electron-forge/maker-zip';
import { MakerDeb } from '@electron-forge/maker-deb';
import { MakerRpm } from '@electron-forge/maker-rpm';
import { VitePlugin } from '@electron-forge/plugin-vite';
import { FusesPlugin } from '@electron-forge/plugin-fuses';
import { FuseV1Options, FuseVersion } from '@electron/fuses';
const config: ForgeConfig = {
packagerConfig: {
asar: true,
},
rebuildConfig: {},
makers: [new MakerSquirrel({}), new MakerZIP({}, ['darwin']), new MakerRpm({}), new MakerDeb({})],
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` is just an alias for `build.lib.entry` in the corresponding file of `config`.
entry: './out/main/index.js',
config: 'vite.main.config.ts',
target: 'main',
},
{
entry: './out/preload/index.js',
config: 'vite.preload.config.ts',
target: 'preload',
},
],
renderer: [
{
name: 'main_window',
config: 'vite.renderer.config.ts',
},
],
}),
// 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,
}),
],
};
export default config;
vite.renderer.config.ts
import { join, resolve } from "path";
import { extendTheme, pigment } from "@stylefusion/vite-plugin";
import { TanStackRouterVite } from "@tanstack/router-plugin/vite";
import react from "@vitejs/plugin-react";
import { config } from "dotenv";
// import { defineConfig, externalizeDepsPlugin } from "electron-vite";
import { NgmiPolyfill } from "vite-plugin-ngmi-polyfill";
import svgr from "vite-plugin-svgr";
import { getPigmentCSSTheme } from "@raikou/system";
// Load environment variables
config({ path: "../../.env" });
const { cssTheme, rawTheme } = getPigmentCSSTheme();
const theme = extendTheme({
cssVarPrefix: "raikou",
getSelector: (colorScheme) =>
colorScheme ? `[data-raikou-color-scheme="${colorScheme}"]` : ":root",
...cssTheme,
});
import { defineConfig } from 'vite';
import path from 'path';
// https://vitejs.dev/config
export default defineConfig({
build: {
rollupOptions: {
input: join(__dirname, "src/renderer/index.html")
},
sourcemap: false,
},
define: {
"process.env": process.env,
},
optimizeDeps: {
include: [
"prop-types",
"react-is",
"hoist-non-react-statics",
"html-react-parser",
],
},
plugins: [
NgmiPolyfill({
nodeGlobalsOptions: {
process: true,
},
}),
pigment({
atomic: false,
theme,
rawTheme,
transformLibraries: [
"@raikou/core",
"@raikou/system",
"@raikou/emotion",
"@raikou/dates",
"@raikou/dropzone",
"@acme/form"
],
}),
react(),
svgr({
include: "**/*.svg",
}),
TanStackRouterVite({
routesDirectory: join(__dirname, "./src/renderer/src/routes"),
generatedRouteTree: join(__dirname, "./src/renderer/src/routeTree.gen.ts"),
}),
],
publicDir: join(__dirname, "src/renderer/src/public"),
resolve: {
alias: {
"@renderer": resolve("src/renderer/src"),
},
},
});
package.json
{
"name": "electron-app",
"version": "1.0.0",
"description": "An Electron application with React and TypeScript",
"_main": "./out/main/index.js",
"main": "./.vite/build/index.js",
"author": "example.com",
"homepage": "https://electron-vite.org",
"scripts": {
"format": "prettier --write .",
"lint": "eslint --cache .",
"typecheck:node": "tsc --noEmit -p tsconfig.node.json --composite false",
"typecheck:web": "tsc --noEmit -p tsconfig.web.json --composite false",
"typecheck": "npm run typecheck:node && npm run typecheck:web",
"start": "electron-forge start",
"_dev": "electron-vite dev",
"dev": "rimraf node_modules/.vite; npx electron-vite dev",
"build": "rimraf node_modules/.vite; npm run typecheck && electron-vite build",
"postinstall": "electron-builder install-app-deps",
"build:unpack": "npm run build && electron-builder --dir",
"build:win": "npm run build && electron-builder --win",
"build:mac2": "electron-builder --config electron-builder.js --mac",
"build:mac": "electron-vite build && electron-builder --mac",
"build:linux": "electron-vite build && electron-builder --linux",
"package": "electron-forge package",
"make": "NODE_ENV=production DEBUG=electron-packager electron-forge make"
},
"dependencies": {
"@acme/auth": "workspace:*",
"@acme/fontawesomeicon": "workspace:*",
"@acme/form": "workspace:*",
"@acme/pm2": "workspace:*",
"@electron-toolkit/preload": "^3.0.1",
"@electron-toolkit/utils": "^4.0.0",
"electron-squirrel-startup": "^1.0.1",
"@raikou/core": "^0.0.27",
"@raikou/emotion": "^0.0.27",
"@raikou/hooks": "^0.0.27",
"@raikou/ripple": "^0.0.27",
"@raikou/system": "^0.0.27",
"@tanstack/react-query": "^5.67.3",
"@tanstack/react-router": "^1.114.15"
},
"devDependencies": {
"@electron-forge/cli": "^7.7.0",
"@electron-forge/maker-deb": "^7.7.0",
"@electron-forge/maker-rpm": "^7.7.0",
"@electron-forge/maker-squirrel": "^7.7.0",
"@electron-forge/maker-zip": "^7.7.0",
"@electron-forge/plugin-auto-unpack-natives": "^7.7.0",
"@electron-forge/plugin-fuses": "^7.7.0",
"@electron-forge/plugin-vite": "^7.7.0",
"@electron/fuses": "^1.8.0",
"@electron-toolkit/eslint-config-prettier": "^3.0.0",
"@electron-toolkit/eslint-config-ts": "^3.0.0",
"@electron-toolkit/tsconfig": "^1.0.1",
"@stylefusion/vite-plugin": "^0.0.28",
"@tanstack/router-devtools": "^1.114.15",
"@tanstack/router-plugin": "^1.114.15",
"@types/node": "^22.13.4",
"@types/react": "^18.3.18",
"@types/react-dom": "^18.3.5",
"@vitejs/plugin-react": "^4.3.4",
"electron": "35.0.1",
"electron-builder": "^25.1.8",
"electron-vite": "^3.0.0",
"eslint": "^9.20.1",
"eslint-plugin-react": "^7.37.4",
"eslint-plugin-react-hooks": "^5.1.0",
"eslint-plugin-react-refresh": "^0.4.19",
"prettier": "^3.5.1",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"typescript": "^5.7.3",
"vite": "^6.1.0",
"vite-plugin-ngmi-polyfill": "^0.0.2",
"vite-plugin-svgr": "^4.3.0"
}
}
Actual behavior
The app should work!
Steps to reproduce
pnpm + vite repo.
Additional information
No response
Metadata
Metadata
Assignees
Labels
No labels