From 9dc6d9567cd3765d3a9582bd04d277d65ffe5863 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 14 Aug 2026 16:20:29 +0000 Subject: [PATCH] perf(build): split vendor chunks and strip debug logs from production bundle MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - manualChunks separates react/wouter, react-query, recharts and lucide from application code: the main bundle drops from 1.73 MB to 1.08 MB and vendor chunks stay browser-cached across deployments since they only change on dependency upgrades - esbuild "pure" removes console.log/console.debug from production builds (console.warn/error kept); the Dockerfile now builds the frontend with NODE_ENV=production so the setting actually applies — this silences the debug-log flood users saw in the browser console in production Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01FHdE9nEh8zHhQNGpCgrtYe --- Dockerfile | 2 +- vite.config.ts | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index d202c00..aa61863 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,7 +27,7 @@ RUN ls -la server/ # Build the application # Build frontend first -RUN npx vite build +RUN NODE_ENV=production npx vite build # Vérifier que les fichiers sont construits RUN echo "=== BUILD VERIFICATION ===" && \ diff --git a/vite.config.ts b/vite.config.ts index c435e97..e82e051 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -22,10 +22,30 @@ export default defineConfig({ "@shared": path.resolve(import.meta.dirname, "shared"), }, }, + // En production, les console.log/debug de debug sont retirés du bundle par + // le minifieur (console.warn et console.error sont conservés). En dev, tout + // reste visible. + esbuild: { + pure: process.env.NODE_ENV === "production" ? ["console.log", "console.debug"] : [], + }, root: path.resolve(import.meta.dirname, "client"), build: { outDir: path.resolve(import.meta.dirname, "dist/public"), emptyOutDir: true, + rollupOptions: { + output: { + // Sépare les grosses dépendances stables du code applicatif : + // elles ne changent qu'aux montées de version et restent donc en + // cache navigateur entre deux déploiements, au lieu de faire + // retélécharger 1,7 Mo à chaque mise en production. + manualChunks: { + "vendor-react": ["react", "react-dom", "wouter"], + "vendor-query": ["@tanstack/react-query"], + "vendor-charts": ["recharts"], + "vendor-icons": ["lucide-react"], + }, + }, + }, }, server: { fs: {