Files
e-cosplay/vite.config.js

123 lines
4.1 KiB
JavaScript

// vite.config.js
import { defineConfig } from 'vite';
import { resolve } from 'path';
import JavaScriptObfuscator from 'rollup-plugin-javascript-obfuscator';
import tailwindcss from '@tailwindcss/vite'
import preact from '@preact/preset-vite';
// Si vous utilisez un framework comme Vue ou React, importez son plugin ici
// import vue from '@vitejs/plugin-vue';
// import react from '@vitejs/plugin-react';
export default defineConfig({
// La racine de votre projet frontend. Tous les chemins seront résolus par rapport à ce dossier.
root: './assets',
// Base publique de l'URL lorsque l'application est déployée.
base: '/assets/',
// --- Options du serveur de développement (vite dev) ---
server: {
// Écoute sur toutes les interfaces réseau locales
host: "0.0.0.0",
// Autorise l'accès depuis ces hôtes
allowedHosts: ["esyweb.local"],
// Port du serveur de développement Vite
port: 5173,
// Ne pas ouvrir automatiquement le navigateur
open: false,
// Configuration CORS pour autoriser les requêtes depuis votre backend Symfony
cors: {
origin: ['https://esyweb.local']
},
},
// --- Options de build (vite build) ---
build: {
// Chemin de sortie des fichiers compilés, relatif à la racine du projet
outDir: resolve(__dirname, 'public/build'),
// Les assets compilés iront dans public/build/assets
assetsDir: '',
// Vide le répertoire de sortie avant chaque build
emptyOutDir: true,
// Génère un fichier manifest.json pour l'intégration avec Symfony
manifest: true,
// Désactive les sourcemaps pour la production
sourcemap: false,
// Minification du code avec esbuild (rapide et efficace)
minify: 'esbuild',
// Configuration avancée de Rollup (utilisé par Vite pour le build)
rollupOptions: {
// Points d'entrée de votre application
input: {
app: resolve(__dirname, 'assets/app.js'),
admin: resolve(__dirname, 'assets/admin.js'),
}
},
},
// --- Résolution des modules ---
resolve: {
// Alias pour simplifier les importations
alias: {
'@': resolve(__dirname, 'assets'),
},
// Extensions de fichiers à résoudre automatiquement
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue', '.scss', '.css'],
},
// --- Plugins Vite ---
plugins: [
// Ajoutez ici les plugins de framework (ex: vue(), react())
tailwindcss(),
preact(),
// --- PLUGIN D'OBSCURCISSEMENT JAVASCRIPT ---
// Doit être l'un des derniers plugins pour s'appliquer au code final.
// ATTENTION : Ces options sont très agressives et peuvent casser votre code.
JavaScriptObfuscator({
// Options d'obscurcissement
compact: true,
controlFlowFlattening: true,
controlFlowFlatteningThreshold: 1,
deadCodeInjection: true,
deadCodeInjectionThreshold: 1,
debugProtection: true,
debugProtectionInterval: 4000,
disableConsoleOutput: true,
identifierNamesGenerator: 'hexadecimal',
log: false,
numbersToExpressions: true,
renameGlobals: true, // Peut casser le code si des bibliothèques externes sont utilisées
selfDefending: true,
shuffleStringArray: true,
simplify: true,
splitStrings: true,
splitStringsChunkLength: 5,
stringArray: true,
stringArrayEncoding: ['base64'],
stringArrayIndexShift: true,
stringArrayRotate: true,
stringArrayShuffle: true,
stringArrayThreshold: 1,
transformObjectKeys: true, // Peut casser l'accès aux propriétés des objets
unicodeEscapeSequence: true,
}),
],
// Définition de variables d'environnement globales (si nécessaire)
define: {},
});