조건부 수출에서 Vite의 중첩 조건을 처리하는 것은 롤업 및 웹 팩과 같은 다른 현대 번들과 유사하지만 몇 가지 주요 차이점이 있습니다.
중첩 및 특이성 순서
-Vite : 조건은`package.json`의 'Exports'필드에 중첩 될 수 있습니다. 가장 구체적으로 가장 구체적으로 지정해야합니다. Vite는 허용 조건 목록 [1]에있는 첫 번째 조건과 일치합니다.
- 롤업 : 롤업은 vite와 동일한 특이성 순서에 따라 'Exports'필드의 중첩 조건을 지원합니다 [2].
-Webpack : Webpack은 또한 'Exports'필드의 중첩 조건을 지원하므로 Vite 및 Rollup과 동일한 특이성 순서가 필요합니다 [3].
허용 조건
-Vite :`import`, 'module',`Browser ','Default '및`Production'또는 'Development'와 같은 환경 별 조건이 포함 된 허용 조건의 사전 정의 된 목록이 있습니다. `resolve.conditions 'config 옵션은 [1]를 더 추가 할 수 있습니다.
- 롤업 :`reservemodules` 및`reservemodulesroot '옵션을 통해 사용자 정의 조건을 지정할 수 있습니다 [2].
-Webpack :`resolve.conditionNames` 옵션을 통해 사용자 정의 조건을 정의 할 수 있습니다 [3].
잘못된 조건 처리
-Vite : 조건이 올바르게 구성되지 않거나 Vite가 잘못된 내보내기를 선택하면 런타임 오류로 이어질 수 있습니다. '수출'필드의 신중한 구조는 중요합니다 [1].
- 롤업 : 롤업은 'Exports'필드에 문제가 발생하면 경고를 기록하지만 여전히 진입 점을 해결할 수 있습니다 [2].
-Webpack : 'Exports'필드가 기형이 있거나 진입 점을 해결할 수없는 경우 WebPack은 오류를 기록합니다 [3].
monorepo 지원
-Vite : Monorepo의 연결된 종속성을 자동으로 감지하고 소스 코드로 취급하여 종속성을 번들링하는 대신 분석합니다 [4].
- 롤업 :`@rollup/plugin-alias`와 같은 플러그인을 사용하여 Monorepo [2]에서 연결된 종속성을 처리해야합니다.
-Webpack : 'Enhanced Resolve'와 같은 플러그인을 사용하여 Monorepo [3]에서 연결된 종속성을 처리해야합니다.
요약하면, Vite의 중첩 조건 처리는 다른 Bundlers와 유사하지만 자동 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