[Node.js] dependencies vs devDependencies – 실무에서 헷갈리지 않기
2023. 12. 20. 02:45
728x90

실무하면서 다시 꺼내보게 된 Node.js 의존성 이야기

실무를 하다 보면 완전히 새로운 걸 만드는 것보단,
기존 코드에 기능을 추가하거나 유지보수하는 일이 훨씬 많죠.

그러다 보니 잊고 지냈던 친구들... dependenciesdevDependencies를 다시 정리해보게 됐습니다.


dependencies (실행 의존성)

프로덕션 환경(=서비스 환경)에서 애플리케이션을 실행할 때 필수적인 라이브러리

npm install express
  • 위처럼 express를 설치하면 서버를 구성하는 핵심 라이브러리죠?
  • 이건 실제 서비스 구동에 꼭 필요한 라이브러리니까 dependencies에 등록됩니다.
  • 예시:
  • express
  • axios
  • sequelize
  • mongoose
  • jsonwebtoken

devDependencies (개발 의존성)

개발할 때만 필요한 도구들. 프로덕션 빌드엔 포함되지 않음.

npm install nodemon eslint prettier --save-dev
  • 코드 변경 시 자동 재시작해주는 nodemon
  • 코드 스타일 맞춰주는 eslint, prettier
  • 테스트 도구들 (jest, mocha, supertest)

이런 것들은 개발 편의를 위한 도구들이고,
운영 서버에서는 실행되지 않아요. 그래서 devDependencies에 포함됩니다.


정리 요약

구분 언제 필요한가? 설치 명령어
dependencies 실제 앱 실행 시 npm install 모듈명
devDependencies 개발/테스트/빌드 도중 npm install 모듈명 --save-dev

실무 팁

  • 배포 시 NODE_ENV=production으로 설정하면, devDependencies는 설치되지 않음
  • Dockerfile에서도 npm ci --only=production 으로 최적화 가능
  • 개발 도구가 프로덕션에 포함되지 않도록 주의할 것!

간단하지만 실무에서 헷갈리기 쉬운 포인트.
기초일수록 다시 한 번 복습해두면 분명 도움이 됩니다 🙂

반응형