**Perfetto: preparo per te un sistema *completamente automatizzato* che crea una nuova pagina React+Vite+FluentUI già configurata per produrre *un singolo file JS*.** Ti basta lanciare un solo comando per generare una nuova pagina dentro `custom-pages/`. --- # 🚀 Obiettivo Automatizzare la creazione di nuove pagine con: - struttura `custom-pages//` - React + Vite + Fluent UI - configurazione `vite.config.js` già pronta per **bundle unico** - CSS iniettato nel JS - build pronta per deploy --- # 🧩 1. Script Node: `create-page.js` Metti questo file nella cartella **root** che contiene `custom-pages/`: ``` create-page.js custom-pages/ ``` ### 📄 **create-page.js** ```js #!/usr/bin/env node const { execSync } = require("child_process"); const fs = require("fs"); const path = require("path"); const pageName = process.argv[2]; if (!pageName) { console.error("❌ Devi specificare il nome della pagina: es. node create-page.js scelta-carriera"); process.exit(1); } const baseDir = path.join(process.cwd(), "custom-pages"); const targetDir = path.join(baseDir, pageName); if (!fs.existsSync(baseDir)) { fs.mkdirSync(baseDir); } if (fs.existsSync(targetDir)) { console.error("❌ La pagina esiste già:", targetDir); process.exit(1); } console.log("📁 Creo la cartella:", targetDir); execSync(`npm create vite@latest ${pageName} -- --template react`, { stdio: "inherit", cwd: baseDir }); console.log("📦 Installo Fluent UI e plugin CSS..."); execSync(`npm install @fluentui/react vite-plugin-css-injected-by-js`, { stdio: "inherit", cwd: targetDir }); console.log("🛠️ Sovrascrivo vite.config.js..."); const viteConfig = ` import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; import cssInjectedByJsPlugin from 'vite-plugin-css-injected-by-js'; export default defineConfig({ plugins: [ react(), cssInjectedByJsPlugin() ], build: { cssCodeSplit: false, rollupOptions: { output: { manualChunks: undefined, inlineDynamicImports: true, entryFileNames: 'bundle.js', assetFileNames: '[name].[ext]' } } } }); `; fs.writeFileSync(path.join(targetDir, "vite.config.js"), viteConfig); console.log("✨ Pagina creata con successo!"); console.log(`➡️ Vai in: custom-pages/${pageName}`); console.log("➡️ Avvia dev server: npm run dev"); console.log("➡️ Build finale: npm run build"); ``` --- # 🧪 2. Come usarlo ### 1️⃣ Rendi eseguibile lo script (solo macOS/Linux) ``` chmod +x create-page.js ``` ### 2️⃣ Crea una nuova pagina ``` node create-page.js scelta-carriera ``` ### 3️⃣ Avvia la pagina ``` cd custom-pages/scelta-carriera npm run dev ``` ### 4️⃣ Build finale (bundle unico) ``` npm run build ``` Output: ``` dist/ index.html bundle.js ← unico file JS ``` --- # 🧱 3. Cosa fa automaticamente | Funzione | Dettaglio | |---------|-----------| | Crea cartella pagina | `custom-pages/` | | Inizializza Vite React | `npm create vite@latest` | | Installa Fluent UI | `@fluentui/react` | | Installa plugin CSS → JS | `vite-plugin-css-injected-by-js` | | Configura bundle unico | `manualChunks: undefined`, `inlineDynamicImports: true` | | Imposta nome bundle | `bundle.js` | --- # 🎁 Vuoi un livello in più? Posso aggiungere: - ✔ uno **script che crea automaticamente componenti base** (App.jsx già con Fluent UI) - ✔ un **template condiviso** per tutte le pagine - ✔ uno **script che builda tutte le pagine in una volta** - ✔ supporto TypeScript Vuoi che lo script generi anche un **App.jsx preconfigurato con Fluent UI**?