La manipulation des conditions imbriquées par Vite dans les exportations conditionnelles est similaire à d'autres bundlers modernes comme Rollup et WebPack, mais avec quelques différences clés:
Ordre de nidification et de spécificité
- Vite: les conditions peuvent être imbriquées dans le champ `` Exports 'de `package.json`. Ils doivent être spécifiés du plus spécifique au moins spécifique. Vite correspondra à la première condition dans sa liste de conditions autorisées [1].
- Rollup: Rollup prend en charge les conditions imbriquées dans le champ `` Exports ', en suivant le même ordre de spécificité que VITE [2].
- WebPack: WebPack prend également en charge les conditions imbriquées dans le champ `` Exports ', nécessitant le même ordre de spécificité que Vite et Rollup [3].
Conditions autorisées
- Vite: a une liste prédéfinie de conditions autorisées qui incluent «Import», «Module», «Browser», «Par défaut» et des conditions spécifiques à l'environnement comme «Production» ou «Development». L'option de configuration `résolve.conditions` peut en ajouter plus [1].
- Rollup: permet de spécifier des conditions personnalisées via les options «Preservemodules» et «Preservemodulesroot» [2].
- WebPack: permet de définir des conditions personnalisées via l'option `résolve.conditionNames '[3].
Gestion des conditions incorrectes
- VITE: Si les conditions ne sont pas structurées correctement ou si Vite sélectionne une exportation incorrecte, cela peut entraîner des erreurs d'exécution. Une structuration minutieuse du champ «exportations» est cruciale [1].
- Rollup: Rollup enregistrera des avertissements s'il rencontre des problèmes avec le champ `` Exports ', mais peut toujours résoudre un point d'entrée [2].
- WebPack: WebPack enregistrera les erreurs si le champ `` Exports 'est mal formé ou s'il ne peut pas résoudre un point d'entrée [3].
Prise en charge de Monorepo
- VITE: détecte automatiquement les dépendances liées dans un monorepo et les traite comme un code source, analysant leurs dépendances au lieu de les regrouper [4].
- Rollup: nécessite d'utiliser des plugins comme `@ rollup / plugin-alias` pour gérer les dépendances liées dans un monorepo [2].
- WebPack: nécessite l'utilisation de plugins comme «Enhanced-Resolve» pour gérer les dépendances liées dans un monorepo [3].
En résumé, le traitement des conditions imbriquées par Vite est similaire à d'autres bundlers, mais il présente certains avantages comme le support automatique MonorePO et une liste de conditions autorisées plus robustes. Cependant, tous les bundlers nécessitent une structuration minutieuse du champ «exportations» pour éviter les problèmes.
Citations:[1] https://v2.vitejs.dev/config/
[2] https://vitejs.dev/guide/features
[3] https://vitejs.dev/guide/dep-pre-bundling
[4] https://vitejs.dev/guide/build
[5] https://vitejs.dev/config/shared-options