프로젝트 개발마다 어떤 패키지 매니저를 사용할지 결정해야 하는데, 저는 프로젝트 특성과 연결 지어 고민 해본 경험이 없어 이번 기회로 학습해보고자 이 주제로 결정하게 되었어요.
개인적인 이유 외에도, 패키지 매니저의 동작 방식을 이해하면 의존성 문제 해결 등 여러 방면에 도움이 되기 때문에 공부해두면 좋은 주제라고 생각했습니다.
서비스를 개발할 때, 모든 부분을 혼자서 구현하는 게 아니라 필요한 기능을 구현해둔 라이브러리를 설치해서 잘 만들어진 기능을 가져다 쓰는 경우가 대부분입니다.
패키지 매니저는 이렇게 프로젝트에서 가져다 쓰는 라이브러리를 관리하는 역할을 하며, 구체적으로 다음과 같은 역할로 정리할 수 있어요.
아래는 https://devocean.sk.com/blog/techBoardDetail.do?ID=166592&boardType=techBlog에서 발췌한 내용이에요.
의존성 관리: 필요한 패키지를 찾아 설치할 수 있습니다.
버전 관리: 패키지의 특정 버전으로 설치/업데이트할 수 있습니다.
편리한 설치 및 업데이트: CLI 명령어 하나로 여러 패키지를 쉽게 설치하거나 업데이트할 수 있습니다.
보안 관리: 패키지가 신뢰할 수 있으며, 손상되지 않음을 보장합니다.
취약점이 발견된 패키지를 감지하는 커맨드를 제공 (npm/yarn/pnpm audit
)
근데 보안 관리는 깃허브에서 메일로 알려주는 게 더 편한 거 같아요,,,,
이렇게 보안 취약점 있는 라이브러리 쓰고 있다고 메일 보내줌
일관성 유지: 팀원들이 모두 동일한 패키지 버전, 패키지 설정을 사용할 수 있습니다.
npm은 Node.js와 같이 설치되는 공식 패키지 매니저이기 때문에 별도로 설치할 필요가 없어요.
하지만 비효율적인 의존성 검색, 일관되지 않은 동작, 비효율적인 설치 과정 등 여러 단점을 가지고 있습니다.