La gestione di Vite delle condizioni nidificate nelle esportazioni condizionali è simile ad altri bundler moderni come rollup e webpack, ma con alcune differenze chiave:
nidificazione e ordine di specificità
- Vite: le condizioni possono essere nidificate nel campo `Exports` di` pack.json`. Dovrebbero essere specificati dal più specifico a meno specifico. Vite corrisponderà alla prima condizione che si trova nell'elenco delle condizioni consentite [1].
- Rollup: il rollup supporta le condizioni nidificate nel campo "Exports", seguendo lo stesso ordine di specificità di Vite [2].
- Webpack: Webpack supporta anche le condizioni nidificate nel campo "Exports", che richiedono lo stesso ordine di specificità di Vite e rollup [3].
condizioni consentite
- Vite: ha un elenco predefinito di condizioni consentite che includono condizioni `importazione ',` module`, `browser`,` predefinite' e specifiche dell'ambiente come `produzione 'o` sviluppo'. L'opzione di configurazione `resolve.conditions 'può aggiungere altro [1].
- Rollup: consente la specifica delle condizioni personalizzate tramite le opzioni `conservemodules` e` conservemodulesRoot` [2].
- Webpack: consente la definizione delle condizioni personalizzate tramite l'opzione `resolve.conditionNames` [3].
Gestione delle condizioni errate
- Vite: se le condizioni non sono strutturate correttamente o Vite seleziona un'esportazione errata, può portare a errori di runtime. L'attenta strutturazione del campo "Exports" è cruciale [1].
- Rollup: Rollup registrerà gli avvisi se incontra problemi con il campo "Exports", ma potrebbe comunque risolvere un punto di ingresso [2].
- Webpack: Webpack registrerà gli errori se il campo `Exports` è malformato o se non può risolvere un punto di iscrizione [3].
SupportoMonoRepo
- Vite: rileva automaticamente le dipendenze collegate in un monorepo e le tratta come codice sorgente, analizzando le loro dipendenze invece di raggrupparle [4].
- Rollup: richiede l'uso di plugin come `@rollup/plugin-alias` per gestire le dipendenze collegate in un monorepo [2].
- Webpack: richiede l'utilizzo di plugin come `Enhanced-Resolve` per gestire le dipendenze collegate in un monorepo [3].
In sintesi, la gestione da parte di Vite delle condizioni nidificate è simile ad altri Bundler, ma presenta alcuni vantaggi come il supporto automatico monorepo e un elenco di condizioni consentite più robuste. Tuttavia, tutti i bundler richiedono un'attenta strutturazione del campo `esportazioni 'per evitare problemi.
Citazioni:[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