npm 의존성은 직접·개발·전이 범위로 읽어야 한다
어떤 패키지를 어디에 적는지는 코드 실행 시점과 빌드 시점, lockfile 재현성에 영향을 준다.
| 범위 | 기록 위치 | 설치 이유 | 문제 신호 |
|---|---|---|---|
| dependencies | package.json dependencies | 앱 실행에 필요한 라이브러리 | 개발 도구가 runtime에 들어감 |
| devDependencies | package.json devDependencies | 빌드, 테스트, 타입 검사 | 배포 환경에서 누락되면 안 되는 패키지 혼동 |
| transitive | package-lock.json | 직접 의존성이 요구하는 하위 패키지 | lockfile 없이 설치 결과가 달라짐 |
| peer | 경고 메시지와 문서 | 프레임워크 버전 호환 | React/Vite 버전 불일치 |
| optional | 환경별 선택 의존성 | 플랫폼 특화 기능 | 설치 실패를 치명 오류로 오해 |
의존성 범위를 나누면 번들 크기, 배포 설치, 팀의 재현 가능한 빌드가 안정된다.