turborepo에서 왜 pnpm을 권장할까요?

백승하·2023년 11월 13일
6
post-thumbnail

개요

필자는 turborepo를 사용 할 때 yarn과 함께 사용하였다, 그렇게 프로젝트를 진행하던 도중 한 친구의 추천으로 pnpm을 적용하게 되었다. 이렇게 계속 프로젝트를 진행하던 도중 한 선배님이 필자에게 "왜 pnpm 썻음?"이라고 물어봤다 필자는 "터보레포에서 pnpm을 권장한데요" 이때까지만해도 필자는 좋은 답변을 했다고 생각했다 하지만 "왜 pnpm을 권장하는지 알고 있냐?" 라는 질문에 필자는 말문이 막혔다 터보레포에서 pnpm을 권장한다고 해서 사용했지만 왜 pnpm을 권장하는지는 모르고 사용한것이였다 그래서 알아보게 되었다

pnpm의 종속성 해결

여러분들은 평소 모노레포로 전환하여 여러 앱을 한 곳에 두었을 때 일부 앱은 의존성이 같았지만 다른 버전에 고정되어 있던 적이 있으셨을 겁니다. 이러한 문제를 해결하려다 많은 오류가 발생하기 때문에 npm은 정말 느려졌습니다 yarn 또한 이러한 문제를 해결하려고 했지만 의존성 문제 해결에 어려움을 겪고 있었죠 이러한 문제를 pnpm이 해결하였습니다

어떻게?

pnpm은 표준 npm과 yarn 보다 훨씬 빠르고 일관된 의존성 해결 알고리즘을 가지고 있었습니다 이러한 알고리즘을 가지고 모노레포에서 많은 프로젝트에 걸쳐 의존성을 재사용하는데 훨씬 빠르고 효율적으로 작동합니다. pnpm은 구현하는데에서 해상도 오류를 발생시키지 않았습니다

pnpm의 의존성 해결 알고리즘은 npm보다 빠르며 복잡한 의존성 트리의 경우 오류가 발생하기 쉽습니다.

CI 파이프라인

npm을 설치하면 캐싱을 사용하더라도 각 파이프를 실행하는 데 2분 이상이 걸렸습니다. 하지만 pnpm과 캐싱을 사용하면 빌드 시간을 10초로 단축할 수 있습니다. 즉, 5개의 파이프라인에서 pnpm을 사용하면 10분 이상 걸리던 시간을 50초로 단축할 수 있습니다.

정리

monorepo, turborepo 및 pnpm의 조합을 구현하여 프론트엔드 코드 기반의 CI 실행 시간과 코드관리를 쉽게 개선 할 수 있다. 앞으로 기술을 사용 할 때 그 기술의 장점과 왜 그 기술이 적합한지 알고 사용하면 좋을 것 같다

레퍼런스
레포지토리

profile
주니어 프론트엔드 개발자입니다

0개의 댓글