0.1.1-alpha.4
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/rules/550-VITE.md -->
|
||||
<!-- version: 1 -->
|
||||
<!-- version: 2 -->
|
||||
|
||||
# Profil Vite
|
||||
|
||||
@@ -31,15 +31,81 @@ Lorsque Vite est sélectionné, cet owner possède notamment :
|
||||
- la copie/transformation d'assets configurée par Vite ou ses plugins ;
|
||||
- les paramètres Vite nécessaires à l'intégration avec un host, sans posséder le host lui-même.
|
||||
|
||||
Les ports, hosts réseau, aliases, plugins et conventions de nommage d'assets restent des décisions locales tant qu'aucune règle plus générale n'est démontrée.
|
||||
Le manifest et le package manager restent possédés par [`540-JAVASCRIPT_PACKAGE_ECOSYSTEM.md`](540-JAVASCRIPT_PACKAGE_ECOSYSTEM.md). Lorsque Vite est sélectionné, le manifest réel **SHOULD** normalement déclarer Vite comme dépendance de développement avec une version décidée par le projet et MAY exposer les scripts `dev`, `build` et `preview` correspondant au workflow réel.
|
||||
|
||||
Un script Vite n'absorbe pas l'ownership du type-check TypeScript, de Sass, d'une génération WASM ou du host.
|
||||
|
||||
## Configuration et décisions locales
|
||||
|
||||
PGR ne fournit pas de `vite.config.ts` universel à ce stade. Une configuration copiable qui figerait arbitrairement le layout source, les chemins de build, le port, le `base`, les aliases ou les plugins transformerait des décisions locales en règles génériques.
|
||||
|
||||
Le projet qui sélectionne Vite doit donc décider explicitement, lorsqu'ils sont pertinents :
|
||||
|
||||
```text
|
||||
root
|
||||
base
|
||||
publicDir
|
||||
cacheDir
|
||||
build.outDir
|
||||
build.assetsDir
|
||||
build.emptyOutDir
|
||||
server.host
|
||||
server.port
|
||||
server.strictPort
|
||||
preview.host / preview.port / preview.strictPort
|
||||
aliases
|
||||
plugins
|
||||
```
|
||||
|
||||
Le guide [`../templates/009-WEB_VITE.md`](../templates/009-WEB_VITE.md) décrit comment adapter ces choix sans imposer de valeurs universelles.
|
||||
|
||||
## Sources, cache et outputs
|
||||
|
||||
Les sources frontend versionnées, le cache de développement et les outputs de production sont des catégories différentes.
|
||||
|
||||
Le cache et les sorties de build reproductibles SHOULD rester hors Git. Pour les projets contrôlés, ils SHOULD être placés hors de l'arborescence source lorsque cela reste simple, reproductible et compatible avec la toolchain ; sinon ils doivent au minimum être ignorés explicitement.
|
||||
Le cache Vite est un artefact reproductible. Il **SHOULD** rester hors Git. Pour les projets contrôlés, `cacheDir` **SHOULD** être externalisé hors de l'arborescence source lorsque cela reste simple et compatible avec la toolchain ; sinon le chemin retenu MUST être ignoré explicitement.
|
||||
|
||||
Le détail du contrat `root`, `cacheDir`, `outDir`, assets et dev server est réservé à `0.1.1-alpha.4`.
|
||||
Le contenu de `build.outDir` est un output généré. Il **SHOULD** rester hors Git et **SHOULD** être externalisé hors de l'arborescence source lorsque cela reste raisonnable. Un projet qui conserve `dist/` ou un autre `outDir` interne MUST l'ignorer explicitement sauf artefact publié exceptionnellement et gouverné comme tel.
|
||||
|
||||
`build.emptyOutDir = true` ne doit être activé explicitement que lorsque le répertoire ciblé est dédié aux outputs Vite et que sa suppression complète avant build est sûre. Il MUST NOT pointer vers un répertoire partagé contenant des artefacts appartenant à d'autres owners.
|
||||
|
||||
Le nom exact de `outDir` et de `cacheDir` reste local au projet.
|
||||
|
||||
## Assets et `publicDir`
|
||||
|
||||
Un asset source importé/référencé par le frontend reste un source versionné selon la politique du projet. Sa copie, transformation ou version hashée dans `build.outDir` est générée et ne doit pas être traitée comme un second source.
|
||||
|
||||
`publicDir` est une capacité optionnelle. Lorsqu'elle est utilisée, son contenu source est servi/copied tel quel par Vite ; les copies produites dans `outDir` restent des outputs générés. Un projet MAY définir `publicDir: false` lorsqu'il n'a pas besoin de cette voie d'assets statiques.
|
||||
|
||||
Un plugin de copie statique MAY être utilisé lorsqu'il répond à un besoin réel. Il ne change pas l'ownership du fichier source copié et ne rend pas ce plugin obligatoire pour les autres projets.
|
||||
|
||||
Le découpage final des assets (`assets/`, `js/`, `css/`, `fonts/`, images ou autre) reste local tant qu'aucune contrainte commune ne le justifie.
|
||||
|
||||
## `root` et `base`
|
||||
|
||||
`root` désigne la racine frontend comprise par Vite. PGR MUST NOT imposer le nom `frontend/` à tous les projets uniquement parce que Games l'utilise. Si les sources ne résident pas à la racine du package, le projet **SHOULD** rendre cette frontière explicite dans sa configuration.
|
||||
|
||||
`base` dépend du mode de déploiement ou d'embarquement. PGR MUST NOT imposer `./`, `/` ou un chemin de sous-répertoire universel. Un host embarqué, un site servi à la racine et un déploiement sous sous-chemin peuvent légitimement demander des valeurs différentes.
|
||||
|
||||
## Dev server
|
||||
|
||||
Le dev server **SHOULD** rester limité à la machine locale/loopback lorsqu'aucun accès externe n'est requis.
|
||||
|
||||
L'écoute sur toutes les interfaces ou l'exposition au LAN **MAY** être activée pour un besoin explicite de test, de device ou d'intégration. Elle doit alors être traitée comme une décision réseau réelle et non comme un défaut PGR.
|
||||
|
||||
Les ports sont locaux au projet. Lorsqu'aucun consommateur ne dépend d'un port fixe, Vite MAY conserver son comportement normal de sélection. Lorsqu'un host, un smoke ou une autre intégration dépend d'une URL déterministe, le projet **SHOULD** configurer explicitement `server.port` avec `server.strictPort = true` afin d'échouer plutôt que de dériver silencieusement vers un autre port.
|
||||
|
||||
`server.allowedHosts = true` et `server.cors = true` **SHOULD NOT** être utilisés comme raccourcis génériques. Une ouverture réseau ou CORS large doit être justifiée et bornée selon le besoin réel.
|
||||
|
||||
Les réglages HMR/WebSocket, proxy, TLS et file-system allowlists restent locaux à l'intégration qui les exige.
|
||||
|
||||
## Preview
|
||||
|
||||
`vite preview` MAY servir de smoke local du build de production lorsqu'il apporte une preuve utile.
|
||||
|
||||
Il MUST NOT être présenté comme serveur de production. Le déploiement/serving de production appartient à l'owner de deployment/operations ou au host concerné, hors scope de `0.1.1`.
|
||||
|
||||
Un port de preview fixe MAY être utilisé lorsqu'un smoke automatisé en dépend ; dans ce cas `preview.strictPort = true` est recommandé pour obtenir une failure déterministe.
|
||||
|
||||
## Validation
|
||||
|
||||
@@ -51,4 +117,8 @@ Une validation Vite ciblée prouve le contrat de build/dev tool de Vite ; elle n
|
||||
- la validation du host Tauri ;
|
||||
- une génération WASM possédée par un autre owner.
|
||||
|
||||
`alpha.4` précisera les commandes et artefacts génériques applicables.
|
||||
Pour un projet réel ayant sélectionné Vite, le build de production via le package manager choisi **SHOULD** faire partie de la gate lorsqu'un changement touche Vite, ses entrées ou ses outputs.
|
||||
|
||||
Le script `typecheck` TypeScript **SHOULD** rester exécutable indépendamment. Une CI MAY exécuter `typecheck` puis `build` comme deux preuves distinctes plutôt que d'enfouir la première dans un script spécifique à un package manager.
|
||||
|
||||
Le guide [`../templates/009-WEB_VITE.md`](../templates/009-WEB_VITE.md) complète ce profil.
|
||||
|
||||
Reference in New Issue
Block a user