본문 바로가기
Dev/Nodejs

NPM (Node Package Manager)의 이해

by 싯벨트 2022. 8. 7.
728x90

 

1. NPM이란?

Node.js 기반의 패키지를 관리하는 도구(설치 및 버전관리)

다른 개발자들이 만든 모듈을 의미하는 3rd-party module의 소스 코드들이 모아져 있는 저장소(npm registry), 웹 사이트(website), 그리고 npm CLI를 통칭해서 NPM이라고 함

모듈의 구분

Built-in module

  • Node.js가 설치되면서 기본으로 내장되어 있는 모듈

Custom module

  • Node.js CommonJS 방식으로 만들 모듈

3rd-party module

  • 다른 개발자들이 만들어 놓은 모듈

2. package.json

  • 프로젝트에 대한 메타 정보와 프로젝트에서 사용중인 npm 패키지에 대한 정보를 담은 파일
  • 프로젝트 초기 세팅 시 package.json부터 만들고 시작
  • npm 패키지의 버전까지 기록
# project 폴더에서 아래 명령어 실행
$ npm init

Press ^C at any time to quit.
package name: (nodejs-study) westarbucks
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author: lordmyshepherd
license: (ISC) MIT
About to write to /Users/lims/software_engineer/nodejs-study/package.json:

# npm init이 완료되면 폴더에 package.json이 생성됨
  • pacakage.json 구성
    • name: 패키지의 이름. package.json의 name 속성에 저장
    • version: 패키지의 버전. npm의 버전은 다소 엄격하게 관리
    • scripts : node.js command line을 정의해서 사용 가능
    • dependencies : 프로젝트에서 사용하는 배포용 패키지와 각 버전을 명시
    • devDependencies : 프로젝트에서 사용하는 로컬 개발용 패키지와 각 버전이 명시
    • git repository: 소스코드를 저장해둔 Git 저장소 주소. 
    • keywords: 키워드는 npm 공식 홈페이지(https://npmjs.com)에서 활용됨. package.json의 keywords 속성에 저장
    • license: 해당 패키지의 라이선스 넣는 곳

3. node_modules

  • npm install 명령어를 실행할 때 생성되는 node_modules 디렉토리
  • 디렉토리 내부에는 설치한 패키지들(express, cookie, 등)이 포함 → 패키지들 한번에 관리 가능
  • package-lock.json도 생성되어 패키지 간 의존 관계를 명확하게 표시
/node_modules
.
├── body-parser
│   └── lib
│       └── types
├── bytes
├── content-disposition
├── content-type
├── cookie
├── cookie-signature
├── express
│   └── lib
│       ├── middleware
│       └── router
├── finalhandler
├── forwarded
├── fresh
├── http-errors
...

3-4. 자주 사용하는 npm 명령어 목록

  • npm outdated : 사용하는 어떤 패키지에 업데이트된 내역을 확인
  • npm install + package : 배포용 패키지를 설치한 후에 package.json의 dependencies 속성에 추가
  • npm install --save-dev + package : 개발용 패키지를 설치한 후에 package.json의 devDependencies 속성에 추가
  • npm uninstall + package : 패키지를 삭제 (npm rm + package도 가능)
  • npm search + 검색어 : npm 패키지를 검색
  • npm info + package : 패키지의 세부 정보 출력
  • npm login : npm에 로그인을 하기 위한 명령어로 사전에 npmjs.com에서 회원가입이 필요
  • npm whoami : 현재 사용자가 누구인지 출력
  • npm logout : 로그인한 계정에서 로그아웃
  • npm version + major : package.json에서 major version 올림
  • npm deprecate + [package][version][message] : 패키지를 설치할 때 경고 메시지를 띄움
  • npm publish : 만든 패키지를 npm에 배포
  • npm unpublish : 만든 패키지의 배포를 중단

'Dev > Nodejs' 카테고리의 다른 글

Node.js 와 이벤트 루프  (0) 2024.04.03
Node.js 모듈 시스템 및 동기/비동기  (0) 2022.08.07
Node.js의 이해  (0) 2022.08.07