Appearance
⚙️ 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.
| Valeur | Cible | Target JS | Polyfills |
|---|---|---|---|
tizen | Samsung Tizen | es2015 | Non (natifs) |
legacy34 | Chrome 34 | es2017 (transpilé) | Oui (externes) |
| (vide) | Moderne | esnext | Oui (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__:truesi build pour Samsung.__IS_LEGACY_34__:truesi build pour Chrome 34.__APP_VERSION__: Version provenant dupackage.json.