Zvládnutí vnořených podmínek Vite v podmíněném vývozu je podobné jiným moderním svazkům, jako jsou Rollup a Webpack, ale s některými klíčovými rozdíly:
Pořadí hnízda a specifičnosti
- Vite: Podmínky mohou být vnořeny do pole „Exports“ `Package.json`. Měly by být specifikovány od nejvíce specifických až nejméně specifických. Vite bude odpovídat první podmínce, která je v seznamu povolených podmínek [1].
- Rollup: Rollup podporuje vnořené podmínky v poli „Exports“ podle stejného pořadí specifičnosti jako Vite [2].
- Webpack: Webpack také podporuje vnořené podmínky v poli „Exports“, které vyžaduje stejný pořadí specificity jako Vite a Rollup [3].
Povolil podmínky
- Vite: má předdefinovaný seznam povolených podmínek, které zahrnují `import`,` modul`, `prohlížeč`,` výchozí` a podmínky specifické pro životní prostředí, jako je „výroba“ nebo „vývoj“. Konfigurační možnost „resolte.Conditions“ může přidat další [1].
- Rollup: Umožňuje zadat vlastní podmínky prostřednictvím možností „PreserveRemodules“ a `PreserveRemodulesroot` [2].
- WebPack: Umožňuje definování vlastních podmínek pomocí možnosti `resolve.ConditionNames` [3].
Manipulace s nesprávnými podmínkami
- Vite: Pokud podmínky nejsou správně strukturovány nebo Vite vybere nesprávný export, může to vést k chybám za běhování. Pečlivé strukturování pole „exportu“ je zásadní [1].
- Rollup: Rollup zaznamená varování, pokud narazí na problémy s poli „Exports“, ale může stále vyřešit vstupní bod [2].
- WebPack: Webpack zaznamená chyby, pokud je pole „Exports“ malformováno nebo pokud nemůže vyřešit vstupní bod [3].
Monorepo podpora
- Vite: Automaticky detekuje propojené závislosti v monorepo a považuje je za zdrojový kód a analyzuje jejich závislosti namísto jejich sdružování [4].
- Rollup: Vyžaduje použití pluginů jako `@rollup/plugin-alias` pro zpracování propojených závislostí v monorepo [2].
- WebPack: Vyžaduje použití pluginů, jako je `vylepšená resolve`, aby zvládla propojené závislosti v monorepo [3].
Stručně řečeno, zacházení s vnořenými podmínkami společnosti VITE je podobné ostatním svazkům, ale má určité výhody, jako je automatická podpora monorepo a robustnější seznam povolených podmínek. Všechny svazky však vyžadují pečlivé strukturování pole „exportu“, aby se zabránilo problémům.
Citace:[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