diff --git a/frontend/electron/forge/forge.config.ts b/frontend/electron/forge/forge.config.ts new file mode 100644 index 0000000..ab5fefd --- /dev/null +++ b/frontend/electron/forge/forge.config.ts @@ -0,0 +1,48 @@ +import { FusesPlugin } from '@electron-forge/plugin-fuses'; +import { FuseV1Options, FuseVersion } from '@electron/fuses'; +import type { ForgeConfig } from "@electron-forge/shared-types"; + +const config: ForgeConfig = { + packagerConfig: { + asar: true + }, + rebuildConfig: {}, + makers: [ + { + name: '@electron-forge/maker-squirrel', + config: {}, + }, + { + name: '@electron-forge/maker-zip', + config: {}, + platforms: ['darwin'], + }, + { + name: '@electron-forge/maker-deb', + config: {}, + }, + { + name: '@electron-forge/maker-rpm', + config: {}, + }, + ], + plugins: [ + { + name: '@electron-forge/plugin-auto-unpack-natives', + config: {}, + }, + // 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; \ No newline at end of file diff --git a/frontend/electron/forge/index.html b/frontend/electron/forge/index.html new file mode 100644 index 0000000..83e1446 --- /dev/null +++ b/frontend/electron/forge/index.html @@ -0,0 +1,13 @@ + + + + + Hello World! + + + +

💖 Hello World!

+

Welcome to your Electron application.

+ + + diff --git a/frontend/electron/forge/package.json b/frontend/electron/forge/package.json new file mode 100644 index 0000000..9ca842d --- /dev/null +++ b/frontend/electron/forge/package.json @@ -0,0 +1,33 @@ +{ + "name": "FromChat", + "productName": "FromChat", + "version": "1.0.0", + "description": "A 100% Open Source Messenger", + "main": "dist-electron/main.js", + "scripts": { + "package": "electron-forge package", + "make": "electron-forge make", + "publish": "electron-forge publish" + }, + "keywords": [], + "author": { + "name": "denis0001-dev", + "email": "denis0001.dev@ya.ru" + }, + "license": "GPL-2.0", + "devDependencies": { + "@electron-forge/cli": "^7.8.3", + "@electron-forge/maker-deb": "^7.8.3", + "@electron-forge/maker-rpm": "^7.8.3", + "@electron-forge/maker-squirrel": "^7.8.3", + "@electron-forge/maker-zip": "^7.8.3", + "@electron-forge/plugin-auto-unpack-natives": "^7.8.3", + "@electron-forge/plugin-fuses": "^7.8.3", + "@electron/fuses": "^1.8.0", + "electron": "37.3.1", + "vite": "^5.4.19" + }, + "dependencies": { + "electron-squirrel-startup": "^1.0.1" + } +} diff --git a/package.json b/package.json index 8b9f0b7..4e98453 100644 --- a/package.json +++ b/package.json @@ -12,16 +12,19 @@ "frontend:dev": "vite frontend", "frontend:build": "tsc --project frontend && vite build frontend", "frontend:electron:dev": "VITE_ELECTRON=true npm run frontend:dev", + "frontend:electron:dependencies": "cd frontend/electron/forge && npm install", + "frontend:electron:build": "VITE_ELECTRON=true npm run frontend:build && cp -r frontend/dist frontend/dist-electron frontend/electron/forge && cd frontend/electron/forge && npm run make", "frontend:preview": "vite preview frontend", "frontend:dependencies": "npm install --ignore-scripts", "frontend:clean": "rm -rf frontend/dist", "dev": "concurrently 'npm run frontend:dev' 'npm run backend:run'", "dev:electron": "concurrently 'npm run frontend:electron:dev' 'npm run backend:run'", - "build": "npm run frontend:build", + "build:electron": "npm run frontend:electron:build", + "build": "npm run frontend:build && npm run build:electron", "preview": "cd deployment && docker compose up --build --watch", "preview:clean": "cd deployment && docker compose down -v", "clean": "npm run backend:clean && npm run frontend:clean && npm run preview:clean", - "install": "npm run backend:dependencies && cp deployment/.env.example deployment/.env" + "install": "npm run backend:dependencies && npm run frontend:electron:dependencies && cp deployment/.env.example deployment/.env" }, "devDependencies": { "autoprefixer": "^10.4.21",