/** * Script exécuté AVANT le build sur Vercel (via prebuild) * 1. Installe @tailwindcss/postcss pour Vercel * 2. Supprime le code CDN Tailwind pour éviter le double-chargement */ const fs = require("fs"); const path = require("path"); const { execSync } = require("child_process"); console.log("\n🔧 [PREBUILD] Starting Vercel preparation script..."); console.log("📋 Environment:", { VERCEL: process.env.VERCEL, NEXT_PUBLIC_VERCEL: process.env.NEXT_PUBLIC_VERCEL, NODE_ENV: process.env.NODE_ENV, }); // Seulement sur Vercel if (process.env.VERCEL === "1" || process.env.NEXT_PUBLIC_VERCEL === "1") { console.log("✅ Running on Vercel - preparing for build...\n"); // Install Tailwind CSS v4 for Vercel build (per official docs) console.log("📦 Installing Tailwind CSS v4 packages..."); try { // Per https://tailwindcss.com/docs/installation/framework-guides // Need to install: tailwindcss @tailwindcss/postcss postcss execSync( "npm install tailwindcss @tailwindcss/postcss postcss --legacy-peer-deps", { stdio: "inherit", }, ); console.log("✅ Tailwind CSS v4 installed with lightningcss bindings\n"); } catch (error) { console.error("❌ Failed to install Tailwind CSS:", error.message); process.exit(1); } // Remove CDN loader console.log("🗑️ Removing Tailwind CDN loader..."); const loaderPath = path.join( __dirname, "..", "components", "tailwind-cdn-loader.tsx", ); console.log("📂 Replacing file:", loaderPath); // Remplacer complètement le fichier par un composant vide const emptyComponent = `'use client' /** * Tailwind CSS v4 Loader (Vercel Build) * * This file was emptied by prebuild script (scripts/remove-cdn-for-vercel.js) * On Vercel, Tailwind v4 is compiled via lightningcss (no CDN needed) */ export function TailwindCDNLoader() { return null; } `; try { const originalContent = fs.readFileSync(loaderPath, "utf-8"); const originalSize = originalContent.length; fs.writeFileSync(loaderPath, emptyComponent); const newSize = emptyComponent.length; console.log("\n📊 Results:"); console.log(" - Original size:", originalSize, "bytes"); console.log(" - New size:", newSize, "bytes"); console.log(" - Removed:", originalSize - newSize, "bytes"); console.log("\n✅ SUCCESS! CDN code removed from tailwind-cdn-loader.tsx"); console.log("🚀 Vercel build will use compiled Tailwind v4 (no CDN)\n"); } catch (error) { console.log("\n❌ ERROR:", error.message); console.log(" Build will continue but CDN might be present\n"); } } else { console.log("⏭️ Not on Vercel - skipping CDN removal"); console.log(" (CDN will be used for CodeSandbox development)\n"); }