본문 바로가기

node.js

[nodejs] package.json 파일에서 dependencies와 devDependencies 차이점

반응형

package.json 파일에서 dependenciesdevDependencies는 각각 다른 목적을 가진 의존성들을 지정하는 데 사용됩니다. 이 둘의 차이점을 이해하는 것은 프로젝트 관리와 배포 과정에서 매우 중요합니다.

dependencies

  • 목적: 애플리케이션이 운영 환경에서 정상적으로 실행되기 위해 필요한 라이브러리와 모듈들을 포함합니다.
  • 사용 예: 프론트엔드 프레임워크(React, Angular), 백엔드 라이브러리(Express, Koa) 등.
  • 설치 명령어: npm install [package-name] 또는 npm install --save [package-name] (최근 버전에서는 기본 옵션으로 저장됨).
  • 예시:
    {
      "dependencies": {
        "express": "^4.17.1",
        "react": "^17.0.2"
      }
    }
  • 설치: npm install 명령어를 실행하면 자동으로 dependencies에 명시된 모든 패키지가 설치됩니다.

devDependencies

  • 목적: 애플리케이션의 개발 및 테스트 과정에서 필요한 라이브러리와 도구들을 포함합니다. 운영 환경에서는 필요하지 않습니다.
  • 사용 예: 테스트 프레임워크(Jest, Mocha), 린팅 도구(ESLint), 빌드 도구(Webpack, Babel) 등.
  • 설치 명령어: npm install --save-dev [package-name] 또는 npm i -D [package-name].
  • 예시:
    {
      "devDependencies": {
        "eslint": "^7.32.0",
        "jest": "^27.0.6"
      }
    }
  • 설치: npm install 명령어를 실행하면 devDependencies에 명시된 패키지도 함께 설치됩니다. 그러나 NODE_ENV=production npm install을 사용하면 devDependencies는 설치되지 않습니다.

주요 차이점

  1. 운영 환경 vs 개발 환경:

    • dependencies는 애플리케이션이 실행되기 위해 항상 필요한 패키지를 포함합니다.
    • devDependencies는 애플리케이션 개발 및 테스트를 위해 필요한 패키지를 포함합니다.
  2. 설치 시점:

    • 기본적으로 npm installdependenciesdevDependencies 모두를 설치합니다.
    • NODE_ENV=production npm install 명령을 실행하면 dependencies만 설치됩니다. 이는 운영 환경에서 불필요한 개발 도구를 설치하지 않도록 합니다.
  3. 패키지 업데이트:

    • npm update 명령어는 dependenciesdevDependencies 모두를 업데이트합니다.
    • 개별 업데이트는 npm update [package-name]을 사용합니다.

정리

  • dependencies: 애플리케이션이 실제로 동작하는 데 필요한 패키지. (운영 환경)
  • devDependencies: 애플리케이션 개발 및 테스트에 필요한 패키지. (개발 환경)

이 구분을 통해 애플리케이션의 성능과 보안, 유지보수를 효율적으로 관리할 수 있습니다. 프로젝트를 배포할 때 불필요한 패키지를 포함하지 않도록 하여 배포 크기를 줄이고 보안을 강화할 수 있습니다.

반응형

'node.js' 카테고리의 다른 글

node_modules/node-sass: Command failed. 오류 해결 하기  (0) 2022.02.14