Velog
의존성 분류하기
의존성(dependency)은 단순히 패키지 목록이 아니라 의미와 목적에 따라 분류되어야 하는 대상이다. dependencies, devDependencies, peerDependencies, optionalDependencies 등의 구분이 단순한 컨벤션이 아니라 번들 크기, 보안 감사, 버전 충돌 해결에 실질적인 영향을 미치기 때문에 올바른 분류가 중요하다.
핵심 요약
이 아티클은 빌드와 개발 도구를 실무 판단 기준으로 다시 정렬해 주는 읽기 자료입니다. 의존성(dependency)은 단순히 패키지 목록이 아니라 의미와 목적에 따라 분류되어야 하는 대상이다. dependencies, devDependencies, peerDependencies, optionalDependencies 등의 구분이 단순한 컨벤션이 아니라 번들 크기, 보안 감사, 버전 충돌 해결에 실질적인 영향을 미치기 때문에 올바른 분류가 중요하다. 의존성을 잘못 분류하면 프로덕션 번들에 불필요한 코드가 포함되거나 peerDependency 충돌로 인해 런타임 오류가 발생할 수 있다.
이 아티클은 빌드와 개발 도구를 면접에서 바로 꺼낼 수 있는 답변 프레임으로 접어 두는 메모처럼 읽으면 좋습니다.
빌드와 개발 도구를 설명할 때 정의만 말하면 답변이 얕아지기 쉽습니다. dependencies는 런타임에 필요한 패키지, devDependencies는 개발/빌드 시에만 필요한 패키지로 구분된다. 실무 판단 근거와 면접 답변의 밀도를 동시에 끌어올릴 수 있습니다.
학습 포인트
면접 답변으로 연결할 학습 포인트입니다.
dependencies는 런타임에 필요한 패키지
dependencies는 런타임에 필요한 패키지, devDependencies는 개발/빌드 시에만 필요한 패키지로 구분된다. 이 포인트를 알고 있으면 비슷한 상황에서 왜 이 접근을 선택하는지까지 설명할 수 있습니다.
dependencies는 런타임에 필요한 패키지를 개념으로만 기억하고 맥락 없이 적용하면 dependencies는 런타임에 필요한 패키지, devDependencies는 개발/빌드 시에만 필요한 패키지로 구분된다. 패턴 이름만 외우고 적용 조건을 구분하지 않으면 비슷한 문제에 같은 해법을 남용하게 됩니다.
peerDependencies는 호스트 패키지
peerDependencies는 호스트 패키지(사용자 프로젝트)가 직접 설치해야 하는 의존성으로, 라이브러리 개발 시 중복 설치를 방지하기 위해 사용한다. 이 포인트를 알고 있으면 비슷한 상황에서 왜 이 접근을 선택하는지까지 설명할 수 있습니다.
peerDependencies는 호스트 패키지를 개념으로만 기억하고 맥락 없이 적용하면 peerDependencies는 호스트 패키지(사용자 프로젝트)가 직접 설치해야 하는 의존성으로, 라이브러리 개발 시 중복 설치를 방지하기 위해 사용한다. 패턴 이름만 외우고 적용 조건을 구분하지 않으면 비슷한 문제에 같은 해법을 남용하게 됩니다.
optionalDependencies는 설치 실패
optionalDependencies는 설치 실패 시에도 프로그램 동작에 지장이 없는 선택적 패키지를 위한 구분이다. 이 포인트를 알고 있으면 비슷한 상황에서 왜 이 접근을 선택하는지까지 설명할 수 있습니다.
optionalDependencies는 설치 실패 를 개념으로만 기억하고 맥락 없이 적용하면 optionalDependencies는 설치 실패 시에도 프로그램 동작에 지장이 없는 선택적 패키지를 위한 구분이다. 패턴 이름만 외우고 적용 조건을 구분하지 않으면 비슷한 문제에 같은 해법을 남용하게 됩니다.
읽는 순서
- 1이론
"의존성 분류하기"의 멘탈 모델과 요약을 먼저 읽고, 빌드와 개발 도구와 관련된 핵심 용어 3개를 적어보세요.
- 2구현
의존성 분류하기에서 다룬 아이디어를 작은 예제로 직접 구현하거나 기존 코드에 대입해 보면서 적용 조건을 확인하세요.
- 3실무
현재 프로젝트에서 빌드와 개발 도구와 연결되는 화면이나 코드 리뷰 사례를 찾아, 어디서 같은 판단이 필요한지 정리해보세요.
- 4설명
동료에게 "npm의 dependencies와 devDependencies의 차이를 설명하고, peerDependencies는 언제 사용하나요?"에 대한 답을 5분 안에 설명해보세요. 막히는 부분이 아직 이해가 얕은 구간입니다.
면접 연결 질문
[감점 답변] 용어 정의만 반복하거나 "의존성 분류하기에서 그렇게 하더라" 수준으로 답하면 감점 포인트입니다. 면접관은 개념을 외운 사람보다 판단 근거를 말하는 사람을 찾습니다. [좋은 답변] 런타임 필요 여부와 라이브러리 배포 시 중복 설치 방지 관점에서 설명. React 컴포넌트 라이브러리를 만들 때 react를 peerDependencies에 넣는 이유를 예로 들면 좋다. 가능하면 선택 이유, 트레이드오프, 실제로 문제가 되는 상황까지 함께 연결하세요.
[감점 답변] 용어 정의만 반복하거나 "의존성 분류하기에서 그렇게 하더라" 수준으로 답하면 감점 포인트입니다. 면접관은 개념을 외운 사람보다 판단 근거를 말하는 사람을 찾습니다. [좋은 답변] devDependencies에 있어야 할 패키지가 dependencies에 있으면 프로덕션 번들 크기 증가, peerDependencies가 없으면 동일 패키지의 여러 버전이 설치되어 런타임 오류 발생 가능. 가능하면 선택 이유, 트레이드오프, 실제로 문제가 되는 상황까지 함께 연결하세요.
[감점 답변] 용어 정의만 반복하거나 "의존성 분류하기에서 그렇게 하더라" 수준으로 답하면 감점 포인트입니다. 면접관은 개념을 외운 사람보다 판단 근거를 말하는 사람을 찾습니다. [좋은 답변] workspace 프로토콜 사용, 공통 의존성 루트에 호이스팅, phantom dependency 문제(pnpm의 엄격한 node_modules 구조로 해결) 등을 언급. 가능하면 선택 이유, 트레이드오프, 실제로 문제가 되는 상황까지 함께 연결하세요.
자기 점검
"dependencies는 런타임에 필요한 패키지"를 기능 목록으로만 외우는 것. 실제로는 왜 이 접근이 필요한지와 적용 조건까지 설명해야 합니다.
좋은 사례만 기억하고 실패 조건을 빼먹는 것. 실제 면접에서는 언제 위험해지는지까지 함께 말해야 합니다.