내 라이브러리 패키지에 노드 모듈을 포함해야 합니까?
P粉716228245
P粉716228245 2023-09-12 19:36:43
0
1
607

저는 React 구성 요소 라이브러리를 개발 중입니다. 이 라이브러리는 여러 내부 NextJ 프로젝트에서 사용됩니다.

NextJ와의 호환성을 위해 이 라이브러리는 어느 시점에 CommonJ로 변환되어야 합니다.

문제는 내 라이브러리의 일부 npm 종속성이 CommonJS를 처리하지 않는다는 것입니다. 예를 들어 스와이퍼(Swiper)의 경우가 그렇습니다.

두 가지 옵션이 있습니다:

  • npm 종속성을 PeerDependency로 선언한 다음 내 라이브러리의 각 소비자가 이를 올바르게 트랜스파일하도록 합니다. 이렇게 하면 내 라이브러리 패키지가 더 가벼워지지만 각 프로젝트(예: NextJ 및 Jest의 경우)에 많은 구성 제약이 발생합니다.
  • 또는 내 생각에는 안티 패턴인 npm 종속성을 내 패키지에 포함하지만 이를 통해 CJS 및 MJS를 노출할 수 있습니다. 내 라이브러리의 소비자는 거의 할 일이 없습니다.

두 가지의 혼합을 구상할 수도 있습니다. CommonJ 및 ES 모듈에 대한 모든 종속성 관리를 무시하고 필요한 것만 전치합니다.

어떻게 생각하세요?

P粉716228245
P粉716228245

모든 응답(1)
P粉647504283

우리도 같은 상황에 처해 있습니다. 기본 ESM 모듈이 있는 핵심 라이브러리에 의존하는 Next.js 애플리케이션이 있습니다. 그러나 종속성을 번들로 묶지 않는 것이 좋습니다. 다운스트림 애플리케이션에는 동일한 종속성이 있을 수 있으며 이제 두 번 로드하게 됩니다. 그리고 다른 타사 종속성(ESM 종속성 포함)에서 이 문제가 발생했을 수도 있습니다. next.config.js 中的 transpilePackages 列表中即可:https://nextjs.org/docs/app/api-reference/next-config-js/transpilePackages。我们还使用 next/jest ,它似乎也可以获取配置并且似乎可以工作。唯一需要注意的是,我发现我们必须转译 @babel/runtime에 추가하기만 하면 됩니다. 하지만 jest가 실행 중인 경우에만 그렇지 않으면 기본 애플리케이션이 중단됩니다.

으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿