Improve bundle size optimization

This commit is contained in:
2025-10-10 12:06:02 +03:00
Unverified
parent 046855395a
commit 37cc78be78
5 changed files with 43 additions and 16 deletions
+31 -13
View File
@@ -1,17 +1,19 @@
import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom"; import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom";
import { ElectronTitleBar } from "./Electron"; import { ElectronTitleBar } from "./Electron";
import { useAppState } from "./pages/chat/state"; import { useAppState } from "./pages/chat/state";
import { useEffect, useState } from "react"; import { useEffect, useState, lazy, Suspense } from "react";
import HomePage from "./pages/home/HomePage";
import LoginPage from "./pages/auth/LoginPage";
import RegisterPage from "./pages/auth/RegisterPage";
import ChatPage from "./pages/chat/ui/ChatPage";
import DownloadAppPage from "./pages/download-app/DownloadAppPage";
import NotFoundPage from "./pages/not-found/NotFoundPage";
import ProtectedRoute from "./pages/ProtectedRoute";
import { isElectron } from "./core/electron/electron"; import { isElectron } from "./core/electron/electron";
import { MINIMUM_WIDTH } from "./core/config"; import { MINIMUM_WIDTH } from "./core/config";
import useWindowSize from "./core/hooks/useWindowSize"; import useWindowSize from "./core/hooks/useWindowSize";
import ProtectedRoute from "./pages/ProtectedRoute";
import NotFoundPage from "./pages/not-found/NotFoundPage";
import DownloadAppPage from "./pages/download-app/DownloadAppPage";
// Lazy load route components
const HomePage = lazy(() => import("./pages/home/HomePage"));
const LoginPage = lazy(() => import("./pages/auth/LoginPage"));
const RegisterPage = lazy(() => import("./pages/auth/RegisterPage"));
const ChatPage = lazy(() => import("./pages/chat/ui/ChatPage"));
export default function App() { export default function App() {
const { restoreUserFromStorage } = useAppState(); const { restoreUserFromStorage } = useAppState();
@@ -31,10 +33,24 @@ export default function App() {
<ElectronTitleBar /> <ElectronTitleBar />
<div id="main-wrapper"> <div id="main-wrapper">
<Routes> <Routes>
<Route path="/" element={<HomePage />} /> <Route path="/" element={
<Route path="/login" element={<LoginPage />} /> <Suspense>
<Route path="/register" element={<RegisterPage />} /> <HomePage />
<Route path="/download-app" element={<DownloadAppPage />} /> </Suspense>
} />
<Route path="/login" element={
<Suspense>
<LoginPage />
</Suspense>
} />
<Route path="/register" element={
<Suspense>
<RegisterPage />
</Suspense>
} />
<Route path="/download-app" element={
<DownloadAppPage />
} />
<Route path="/"> <Route path="/">
<Route path="chat" element={ <Route path="chat" element={
<ProtectedRoute> <ProtectedRoute>
@@ -42,7 +58,9 @@ export default function App() {
</ProtectedRoute> </ProtectedRoute>
} /> } />
</Route> </Route>
<Route path="*" element={<NotFoundPage />} /> <Route path="*" element={
<NotFoundPage />
} />
</Routes> </Routes>
</div> </div>
</BrowserRouter> </BrowserRouter>
-1
View File
@@ -6,7 +6,6 @@
*/ */
import './css/style.scss'; import './css/style.scss';
import "mdui/mdui.css";
import "./utils/material"; import "./utils/material";
import "./core/init"; import "./core/init";
+1
View File
@@ -21,6 +21,7 @@ import 'mdui/components/top-app-bar';
import 'mdui/components/top-app-bar-title'; import 'mdui/components/top-app-bar-title';
import 'mdui/components/switch'; import 'mdui/components/switch';
import 'mdui/components/chip'; import 'mdui/components/chip';
import "mdui/mdui.css";
import { setColorScheme } from 'mdui/functions/setColorScheme.js'; import { setColorScheme } from 'mdui/functions/setColorScheme.js';
+9 -1
View File
@@ -4,6 +4,9 @@ import autoprefixer from "autoprefixer";
import electron from "vite-plugin-electron/simple"; import electron from "vite-plugin-electron/simple";
import react from "@vitejs/plugin-react"; import react from "@vitejs/plugin-react";
import path from "path"; import path from "path";
import { visualizer } from 'rollup-plugin-visualizer';
const outDir = process.env.VITE_ELECTRON ? "build/electron/dist" : "build/normal/dist";
const plugins: PluginOption[] = [ const plugins: PluginOption[] = [
react(), react(),
@@ -18,6 +21,11 @@ const plugins: PluginOption[] = [
minifyCSS: true, minifyCSS: true,
minifyJS: true minifyJS: true
} }
}),
visualizer({
filename: `${outDir}/stats.html`,
open: true,
gzipSize: true
}) })
] ]
@@ -85,7 +93,7 @@ export default defineConfig({
}, },
cssMinify: true, cssMinify: true,
assetsInlineLimit: 0, assetsInlineLimit: 0,
outDir: process.env.VITE_ELECTRON ? "build/electron/dist" : "build/normal/dist", outDir: outDir,
chunkSizeWarningLimit: 1024 chunkSizeWarningLimit: 1024
} }
}); });
+2 -1
View File
@@ -1,5 +1,5 @@
{ {
"name": "FromChat", "name": "fromchat",
"private": true, "private": true,
"version": "0.0.0", "version": "0.0.0",
"type": "module", "type": "module",
@@ -53,6 +53,7 @@
"electron": "^38.1.2", "electron": "^38.1.2",
"husky": "^9.1.7", "husky": "^9.1.7",
"postcss": "^8.5.6", "postcss": "^8.5.6",
"rollup-plugin-visualizer": "^6.0.4",
"sass-embedded": "^1.93.0", "sass-embedded": "^1.93.0",
"terser": "^5.44.0", "terser": "^5.44.0",
"typescript": "~5.9.2", "typescript": "~5.9.2",