Vite's afhandeling van geneste omstandigheden in voorwaardelijke export is vergelijkbaar met andere moderne bundlers zoals Rollup en Webpack, maar met enkele belangrijke verschillen:
Nest- en specificiteitsvolgorde
- Vite: voorwaarden kunnen worden genest in het veld 'Exports' van 'pakket.json'. Ze moeten worden gespecificeerd van het meest specifiek tot het minst specifiek. Vite komt overeen met de eerste voorwaarde die in de lijst met toegestane omstandigheden staat [1].
- Rollup: Rollup ondersteunt geneste omstandigheden in het veld 'Exports', volgens dezelfde specificiteitsorder als Vite [2].
- Webpack: Webpack ondersteunt ook geneste voorwaarden in het veld 'Exports', waarbij dezelfde specificiteitsorder nodig is als Vite en Rollup [3].
toegestane voorwaarden
- Vite: heeft een vooraf gedefinieerde lijst met toegestane voorwaarden die `import`,` module`, `browser`,` default` en omgevingsspecifieke voorwaarden zoals `productie 'of` ontwikkeling' omvat. De configuratieoptie `resolve.conditions` kan meer toevoegen [1].
- Rollup: maakt het opgeven van aangepaste voorwaarden via de opties `conserveModules` en` conserveModulesRoot` [2].
- Webpack: maakt het definiëren van aangepaste voorwaarden via de optie `resolve.conditionnames` [3].
ONTWIKKELING ONJUISTE VOORWAARDEN
- Vite: als de voorwaarden niet correct zijn gestructureerd of Vite een onjuiste export selecteert, kan dit leiden tot runtime -fouten. Zorgvuldige structurering van het veld 'Exports' is cruciaal [1].
- Rollup: Rollup zal waarschuwingen loggen als het problemen ondervindt met het veld 'Exports', maar kan nog steeds een toegangspunt oplossen [2].
- Webpack: webpack logt fouten in als het veld `exports` is misvormd of als het geen invoerpunt kan oplossen [3].
Monorepo -ondersteuning
- Vite: detecteert automatisch gekoppelde afhankelijkheden in een monorepo en behandelt ze als broncode, en analyseert hun afhankelijkheden in plaats van ze te bundelen [4].
- Rollup: vereist het gebruik van plug-ins zoals `@rollup/plugin-alias` om gekoppelde afhankelijkheden in een monorepo te verwerken [2].
- Webpack: vereist het gebruik van plug-ins zoals `Enhanced-Resolve` om gekoppelde afhankelijkheden in een monorepo te verwerken [3].
Samenvattend is Vite's afhandeling van geneste omstandigheden vergelijkbaar met andere bundlers, maar het heeft enkele voordelen, zoals automatische monorepo -ondersteuning en een meer robuuste toegestane omstandighedenlijst. Alle bundlers vereisen echter een zorgvuldige structurering van het veld 'Exporteren' om problemen te voorkomen.
Citaten:[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