```
[+] chore(root): Initialise le projet avec une structure de base Crée la structure de base du projet Symfony, incluant les entités, services, formulaires, et templates nécessaires pour la gestion des comptes utilisateurs, la sécurité, et la gestion des mots de passe oubliés. Ajoute également la configuration pour la gestion des assets avec Vite, la gestion des fichiers avec Flysystem, et la génération de sitemaps. ```
This commit is contained in:
96
vite.config.js
Normal file
96
vite.config.js
Normal file
@@ -0,0 +1,96 @@
|
||||
// vite.config.js
|
||||
|
||||
import { defineConfig } from 'vite';
|
||||
import { resolve } from 'path';
|
||||
import JavaScriptObfuscator from 'rollup-plugin-javascript-obfuscator';
|
||||
import tailwindcss from '@tailwindcss/vite'
|
||||
import viteCompression from 'vite-plugin-compression';
|
||||
|
||||
export default defineConfig({
|
||||
|
||||
root: './assets',
|
||||
base: '/assets/',
|
||||
server: {
|
||||
host: "0.0.0.0",
|
||||
allowedHosts: ["esyweb.local"],
|
||||
|
||||
port: 5173,
|
||||
|
||||
open: false,
|
||||
|
||||
cors: {
|
||||
origin: ['https://esyweb.local']
|
||||
},
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': resolve(__dirname, 'assets'),
|
||||
},
|
||||
// Extensions de fichiers à résoudre automatiquement
|
||||
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue', '.scss', '.css'],
|
||||
},
|
||||
build: {
|
||||
outDir: resolve(__dirname, 'public/build'),
|
||||
assetsDir: '',
|
||||
emptyOutDir: true,
|
||||
manifest: true,
|
||||
sourcemap: false,
|
||||
// Minification par défaut : esbuild est déjà très rapide et efficace
|
||||
minify: 'esbuild',
|
||||
cssMinify: 'esbuild',
|
||||
// NOUVEAU : Stratégie de découpage du code pour améliorer le cache client
|
||||
rollupOptions: {
|
||||
input: {
|
||||
app: resolve(__dirname, 'assets/app.js'),
|
||||
admin: resolve(__dirname, 'assets/admin.js'),
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// --- Plugins Vite ---
|
||||
plugins: [
|
||||
tailwindcss(),
|
||||
// NOUVEAU: Ajoutez Preact/React/Vue si vous utilisez ces frameworks
|
||||
// preact(),
|
||||
|
||||
// 1. Compression des Assets (Gzip et Brotli)
|
||||
// Crée des fichiers .gz et .br à côté des assets originaux.
|
||||
// Votre serveur web (Nginx/Apache) doit être configuré pour servir ces versions compressées.
|
||||
viteCompression({
|
||||
verbose: true,
|
||||
disable: false,
|
||||
threshold: 10240, // Compresse seulement les fichiers > 10KB
|
||||
algorithm: 'gzip',
|
||||
ext: '.gz',
|
||||
}),
|
||||
viteCompression({
|
||||
verbose: true,
|
||||
disable: false,
|
||||
threshold: 10240,
|
||||
algorithm: 'brotliCompress', // Brotli est plus efficace que Gzip
|
||||
ext: '.br',
|
||||
// Ne génère le brotli que si l'algorithme est disponible (par défaut)
|
||||
deleteOriginFile: false // Important : gardez les fichiers originaux
|
||||
}),
|
||||
|
||||
JavaScriptObfuscator({
|
||||
// Options recommandées pour un bon équilibre entre sécurité et performance
|
||||
compact: true,
|
||||
sourceMap: false,
|
||||
controlFlowFlattening: true, // Très efficace mais coûteux en performance à l'exécution
|
||||
deadCodeInjection: false,
|
||||
debugProtection: false,
|
||||
identifierNamesGenerator: 'hexadecimal', // Rend le code illisible
|
||||
log: false,
|
||||
numbersToExpressions: true,
|
||||
simplify: true,
|
||||
splitStrings: true,
|
||||
stringArray: true,
|
||||
stringArrayThreshold: 0.75,
|
||||
transformObjectKeys: true,
|
||||
unicodeEscapeSequence: false,
|
||||
}),
|
||||
|
||||
],
|
||||
define: {},
|
||||
});
|
||||
Reference in New Issue
Block a user