Обработка VITE с вложенными условиями в условном экспорте аналогична другим современным пучкам, таким как Rollup и WebPack, но с некоторыми ключевыми различиями:
Заказ о гнездовании и специфичности
- VITE: Условия могут быть вложены в поле `exports` of` package.json`. Они должны быть указаны из наиболее специфического до наименьшего специфического. VITE будет соответствовать первым условиям, которое находится в его допустимых условиях [1].
- RULLUP: ROLLUP поддерживает вложенные условия в поле «Экспорт», следуя тем же порядку специфичности, что и VITE [2].
- WebPack: WebPack также поддерживает вложенные условия в поле «Экспорт», требуя того же порядка специфичности, что и VITE и RULLUP [3].
разрешенные условия
- VITE: имеет предопределенный список разрешенных условий, которые включают в себя «Импорт», «Модуль», «Браузер», «По умолчанию» и условия, специфичные для окружающей среды, такие как «Производство» или «Разработка». Опция конфигурации `result.conditions` может добавить больше [1].
- Rollup: позволяет определять пользовательские условия через параметры `preservemodules` и` preservemodulesroot` [2].
- WebPack: позволяет определять пользовательские условия с помощью опции `Resiple.conditionNames`` [3].
обработка неверных условий
- VITE: Если условия не структурированы правильно или VITE выбирает неправильный экспорт, это может привести к ошибкам времени выполнения. Тщательное структурирование поля «экспорта» имеет решающее значение [1].
- Rollup: Rollup будет регистрировать предупреждения, если он столкнется с проблемами с полем «экспорта», но все равно может разрешить точку входа [2].
- WebPack: WebPack будет регистрировать ошибки, если поле `exports` поставлено умен или если он не может разрешить точку входа [3].
Поддержка Monorepo
- VITE: автоматически обнаруживает связанные зависимости в монорепо и рассматривает их как исходный код, анализируя их зависимости вместо их объединения [4].
- Rollup: требует использования плагинов, таких как `@rollup/plugin-alias`, для обработки связанных зависимостей в монорепо [2].
- WebPack: требует использования плагинов, таких как `Enhanced-Resolve` для обработки связанных зависимостей в монорепо [3].
Таким образом, обработка VITE с вложенными условиями аналогична другим бундлерам, но у нее есть некоторые преимущества, такие как автоматическая поддержка MonorePo и более надежный список разрешенных условий. Тем не менее, все бундлеры требуют тщательного структурирования поля «экспорта», чтобы избежать проблем.
Цитаты:[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