[Node.js] npm install

[Node.js] npm install

npm install은 Node.js 프로젝트에서 패키지(모듈)를 설치하고 관리하기 위한 핵심 명령어다. 이 명령어를 통해 의존성을 추가하거나, 프로젝트의 모든 의존성을 한 번에 설치할 수 있다. npm install은 간단해 보이지만, 다양한 옵션과 기능을 제공하며, 이를 깊이 이해하면 프로젝트 관리가 훨씬 더 수월해진다.


npm install의 기본 개념

기본 동작

  • npm install 명령어는 Node.js 패키지를 설치하거나, 이미 정의된 의존성을 설치하는 데 사용된다.
  • 설치된 패키지는 node_modules 디렉토리에 저장된다.
  • 설치 정보는 package.json 파일에 기록되며, 이를 통해 의존성을 관리할 수 있다.

npm install의 주요 사용법

1. 모든 의존성 설치


npm install

  • *package.json*에 기록된 모든 dependenciesdevDependencies를 설치한다.
  • 프로젝트를 처음 클론했을 때나, 새 환경에서 작업을 시작할 때 사용한다.
  • 설치된 패키지는 node_modules 디렉토리에 저장된다.

2. 특정 패키지 설치


npm install <package-name>

  • 특정 패키지를 설치하며, 설치된 패키지는 기본적으로 **dependencies*에 추가된다.

예:


npm install express

  • express가 설치되고, **package.json*의 dependencies에 기록된다.

"dependencies": {
  "express": "^4.18.2"
}


3. 개발용 패키지 설치


npm install <package-name> --save-dev

  • 패키지를 **devDependencies*에 추가한다.
  • 개발 환경에서만 필요한 도구들을 설치할 때 사용한다.

예:


npm install eslint --save-dev

  • eslint가 설치되고, **package.json*의 devDependencies에 기록된다.

"devDependencies": {
  "eslint": "^8.47.0"
}


4. 글로벌 패키지 설치


npm install -g <package-name>

  • 패키지를 전역(global)으로 설치하여, 어디서든 사용할 수 있게 한다.
  • 주로 CLI(Command Line Interface) 도구를 설치할 때 사용된다.

예:


npm install -g nodemon

  • nodemon이 전역으로 설치되어, 명령어 nodemon을 어디서든 사용할 수 있다.

5. 특정 버전 설치


npm install <package-name>@<version>

  • 원하는 버전의 패키지를 설치한다.
  • 버전을 명시하지 않으면 기본적으로 최신 버전이 설치된다.

예:


npm install express@4.17.1

  • express4.17.1 버전이 설치된다.

6. 패키지 제거


npm uninstall <package-name>

  • 특정 패키지를 제거하며, dependencies 또는 devDependencies에서도 해당 패키지를 삭제한다.

예:


npm uninstall express


설치 시 중요한 플래그들

1. -save-dev

  • 개발용 패키지를 설치하며, devDependencies에 추가한다.

2. g

  • 패키지를 전역(global)으로 설치한다.
  • 보통 패키지별로 나누지 않고 전역에서 사용될때(예, nodemon) 사용한다.

3. -save-exact

  • 정확한 버전을 설치하고, 버전 앞에 ^~를 생략한다.

예:


npm install lodash --save-exact

package.json에 정확한 버전만 기록:


"dependencies": {
  "lodash": "4.17.21"
}

4. -force

  • 충돌이나 오류가 발생해도 강제로 설치를 진행한다.

npm install의 내부 작동 방식

  1. package.json 확인:
    • 설치할 패키지가 이미 package.json에 정의되어 있다면, 해당 정보를 기반으로 설치를 진행한다.
  2. package-lock.json 사용:
    • 정확한 버전 관리를 위해 package-lock.json 파일을 확인하고, 동일한 의존성 구조를 유지하며 설치한다.
  3. 패키지 다운로드:
    • 패키지를 node_modules 디렉토리에 다운로드한다.
  4. 캐싱:
    • 다운로드된 패키지는 로컬 캐시에 저장되며, 이후 동일한 패키지를 설치할 때 빠르게 처리된다.

의존성 설치의 두 가지 유형

  1. dependencies:
    • 앱이 실행될 때 반드시 필요한 패키지.
    • 배포 환경에서도 설치된다.
  2. devDependencies:
    • 개발 중에만 필요한 패키지.
    • 테스트 도구, 코드 품질 검사 도구, 빌드 도구 등이 여기에 해당된다.

실무에서의 사용 사례

  1. 새 프로젝트 시작:
    • npm init으로 프로젝트를 초기화하고, npm install로 필요한 라이브러리를 추가.
  2. 협업 시:
    • 깃허브에서 프로젝트를 클론한 후, npm install을 실행하여 의존성을 설치.
  3. 버전 충돌 해결:
    • 정확한 버전을 지정하여 설치하거나, -save-exact 옵션을 사용하여 일관성 유지.
  4. 테스트 환경 구성:
    • 테스트 및 개발 도구를 -save-dev 옵션으로 설치하여 환경을 깔끔하게 분리.

마무리하며

npm install은 단순히 패키지를 설치하는 명령어가 아니다. 프로젝트 의존성을 효율적으로 관리하고, 협업과 배포의 일관성을 유지하는 데 있어 필수적인 도구다. 적절한 옵션과 사용법을 숙지하면, 프로젝트를 보다 체계적으로 관리할 수 있다.

댓글