• Node.js 기술운영위원회(TSC)가 Corepack을 더 이상 Node.js에 포함해 배포하지 않기로 공식 투표로 결정함
  • Node.js 25버전부터 적용되며, Node.js 24 이하에서는 실험적 기능으로 계속 제공됨

Corepack의 역할과 한계

  • Corepack은 Node.js 16.9.0에서 도입된 실험적 도구로, Yarn, pnpm 같은 패키지 매니저를 별도 설치 없이 사용할 수 있게 해줌
  • 프로젝트에서 특정 패키지 매니저 버전을 강제할 수 있도록 도와주는 역할을 수행함
  • 하지만 사용자 인식 부족과 목적에 대한 오해로 인해 널리 사용되지 않음
  • 런타임과 독립적으로 동작해야 할 패키지 매니저를 Node.js에 포함시키는 것에 대한 회의론 존재

Corepack 제거까지의 과정

  • Corepack의 향후에 대한 논의는 수년간 지속되어 왔으며, 2023년 11월에는 기본 활성화 제안이 논란을 일으킴
  • 2024년 2월에는 Corepack이 npm과 Node.js의 결합을 해체하는 수단으로 쓰일 수 있다는 우려 제기
  • 2024년 3월에는 npm은 계속 Node.js에 포함된다는 점을 명확히 하면서도, Corepack의 제거 가능성이 대두됨
  • TSC는 패키지 유지보수 워킹 그룹(PMWG)에 관련 결정을 위임함
  • PMWG는 다음과 같은 제거 로드맵을 제시함:
    • Node.js 다운로드 페이지에서 nvm, fnm 같은 버전 관리 도구를 강조
    • Corepack 문서를 Node.js API 문서에서 분리하여 별도 저장소로 이동
    • 다음 주요 릴리스부터 Corepack을 Node.js 배포본에서 제거
  • 이 로드맵은 PMWG 내에서 강한 지지를 받아 최종 투표로 이어짐

Corepack 제거 결정의 이유

  • 낮은 채택률: 많은 개발자들이 Corepack 대신 각자 선호하는 패키지 매니저를 직접 설치해서 사용함
  • 배포 관련 우려: Corepack이 Node.js 바이너리에 포함되는 것 자체가 불필요하다는 의견 존재
  • 장기 유지보수 문제: Corepack이 Node.js와 분리되면, 패키지 매니저가 더 독립적으로 발전할 수 있음
  • 투표 결과는 '향후 단계적 제거' 제안이 채택됨
  • 다른 제안(예: 기본 비활성 상태로 유지)은 충분한 지지를 받지 못함
  • 일부 개발자들은 npm 대신 Corepack을 사용해 pnpm을 활용했기 때문에 이 결정을 후퇴라고 평가
  • Node.js 측은 Corepack이 원래부터 영구적인 기능이 아니며, 분리 유지되는 것이 바람직하다고 강조함

앞으로의 변화

  • 향후 Node.js에서는 Corepack이 기본 포함되지 않음
  • 필요 시 수동으로 다음 명령어를 통해 설치해야 함:
    • npm install -g corepack
  • Corepack을 사용하는 프로젝트는 문서와 워크플로우를 업데이트할 필요 있음
  • 단, 이번 결정은 Corepack의 지원 종료를 의미하는 것이 아니라, 단지 Node.js에서 제거된다는 의미임
  • Node.js 24.x가 EOL이 되기 전까지는 Corepack 유지보수가 계속됨

Node.js와 패키지 매니저의 역사적 맥락

  • 과거에도 Node.js에 포함해야 할 요소에 대한 논란이 존재했으며, npm 포함 여부도 그 중 하나였음
  • Yarn, pnpm 등 대체 패키지 매니저의 등장으로 다양한 선택지가 생김
  • Corepack 제거는 Node.js 배포본을 더 간결하게 만들기 위한 움직임의 일환임
  • 이는 런타임과 패키지 매니저를 분리하는 다른 언어 생태계의 흐름과도 일치함
  • 개발자들은 향후 Node.js에 Corepack이 포함되지 않는 점을 고려하여 개발 환경을 준비해야 함