Skip to content

⚙️ Configuration Technique du Build

Ce document détaille la logique d'adaptation de Vite et SvelteKit via la variable d'environnement BUILD_TARGET.


🏗️ La Variable BUILD_TARGET

La sélection de la cible se fait en passant BUILD_TARGET à la commande de build. Cela impacte directement vite.config.ts et svelte.config.js.

ValeurCibleTarget JSPolyfills
tizenSamsung Tizenes2015Non (natifs)
legacy34Chrome 34es2017 (transpilé)Oui (externes)
(vide)ModerneesnextOui (internes)

🛠️ Configuration Vite (vite.config.ts)

Les paramètres clés qui changent selon la cible :

1. Stratégie de Bundling

Pour les cibles Legacy et Tizen, nous activons inlineDynamicImports pour générer un seul fichier JavaScript massif, évitant ainsi les erreurs de chargement de modules dynamiques :

typescript
rollupOptions: wantSingleBundle ? {
  output: { inlineDynamicImports: true }
} : {
  // Mode moderne : Code Splitting activé
  output: { manualChunks: { ... } }
}

2. Inlining des Assets

Pour réduire la latence réseau sur les matériels anciens, nous forçons l'inlining des images et polices directement dans le CSS/JS jusqu'à 1 Mo :

typescript
assetsInlineLimit: isTizen || isLegacy34 ? 1000000 : 4096;

3. Minification

Elle est désactivée pour Tizen afin de permettre le débogage via les outils de développement Samsung qui peinent avec le code minifié :

typescript
minify: isTizen ? false : 'esbuild',
cssMinify: isTizen ? false : 'esbuild',

🛠️ Configuration SvelteKit (svelte.config.js)

L'adapteur statique est configuré pour rediriger les sorties vers les dossiers appropriés :

javascript
adapter: adapter({
	pages: isTizen ? 'tizen/dist' : isLegacy34 ? 'legacy-build' : 'build',
	assets: isTizen ? 'tizen/dist' : isLegacy34 ? 'legacy-build' : 'build',
	fallback: 'index.html',
	strict: true
});

🧪 Constantes Globales (Define)

Plusieurs constantes sont injectées au moment du build pour permettre au code de s'adapter dynamiquement à l'environnement d'exécution :

  • __IS_TIZEN__ : true si build pour Samsung.
  • __IS_LEGACY_34__ : true si build pour Chrome 34.
  • __APP_VERSION__ : Version provenant du package.json.

Retour à l'index des Builds | Retour à l'accueil