npm에서 사용되는 의존성의 유형
dependency
프로덕션 환경에서도 필요한 패키지
ex - react 프로젝트면 react 패키지는 실행에 필수적이므로 dependencies에 포함
이 의존성은 배포 환경에서도 설치되며, 애플리케이션이 동작하는 데 직접적인 영향 미침
devDependency
개발 과정에서만 필요한 패키지
ex - eslint, jest, webpack 같은 도구들은 코드 품질 검증이나 테스트, 번들링을 위해 사용되지만, 실제 서비스 운영에 필요 x
peerDependency
호환성을 위해 특정 버전의 다른 패키지를 필요로 한다는 사실 명시
이 의존성은 보통 라이브러리를 개발할 때 중요, 해당 패키지가 특정 버전의 다른 패키지를 사용해야 할 경우 지정.
이를 통해 호환성 문제를 줄이면서도 동일한 패키지가 여러 번 설치되는 문제 방지
불필요한 패키지가 프로덕션 환경에 포함되는 문제 발생
ex - devDependencies에 추가해야 할 webpack 같은 패키지를 dependencies에 추가 시 배포된 애플리케이션 크기가 불필요하게 커질 수 있음
배포 속도 저하나 서버 부하 증가의 원인
또한 불필요한 패키지 포함 시 보안 취약점 늘어남
반대로, dependencies에 있어야할 패키지를 devDependencies에 잘못 넣으면, 실제 운영 환경에서 해당 패키지가 누락되어 애플리케이션 정상 실행 안될 수 있음