본문 바로가기
개발(Development)/JS(자바스크립트)

Node.js: NPM 명령어 정리, package.json(+scripts) 생성 및 사용 방법

by 카레유 2021. 7. 1.

# NPM(Node Package Manager)이란?

- Node.js 전용 패키지가 올라가 있는 서버이다.

- 패키지 업로드/다운로드 및 버전관리 기능을 제공한다.

- node.js를 설치할 때 함께 설치된다.

* 패키지는 남들이 만들어 놓은 외부모듈로, 라이브러리 같은 개념이다.

* NPM 공식 사이트: https://www.npmjs.com/


# package.json 생성

- 수많은 패키지를 다운받다보면 관리가 어려워진다.

- 그래서 프로젝트마다 package.json 파일을 만들어서 패키지 목록 및 버전을 관리한다.

* 프로젝트를 생성하자마자 package.json을 만들어주고 시작하길 권장한다.

 

- 명령어:  npm init 

 

1) package name 등의 정보를 입력해준다. 필요 없는 항목은 Enter를 눌러 스킵할 수 있다.

2) 마지막에 Is this OK? 항목에서 yes를 입력해준다.

* git 설정이 안 되어 있다면, git repository 관련 warning이 뜰 수 있는데 무시해도 된다.

 

- 정상적으로 package.json 파일을 생성했다면 아래의 3가지 파일 및 폴더가 생성될 것이다.

* 단, 외부 패키지를 전혀 설치하지 않은 초기 상태라면 node_modules폴더, package-lock.json파일은 생성되지 않을 수 있다. 

* 추후에 "npm install 패키지" 명령어 등을 통해 패키지를 설치하면 자동으로 생성될 것이다.

 

1. package.json 파일

: 설치된 패키지를 dependencies 항목에서 관리한다.

* socket.io 라는 패키지를 설치한 후 캡쳐한 화면이다.

 

2. node-modules 폴더

: 설치한 패키지가 실제로 저장되어 있는 폴더이다.

: 설치한 패키지가 의존하는 다른 패키지도 함께 설치되어 저장된다.

* npm root 명령어로 node-modules 폴더 위치를 확인할 수 있다.

 

3. package-lock.json 파일

: 설치한 패키지 + 의존하는 패키지 항목을 모두 관리한다.


# 패키지 설치/삭제 명령어

: 외부 모듈인 패키지를 설치/삭제하는 명령어이다.

1. 패키지 설치

- 명령어:  npm install 패키지명  

: 패키지를 현재의 프로젝트의 node_modules 폴더에 설치한다.

: package.json 파일의 dependencies 항목에도 자동으로 추가 된다.

* 과거에는 dependencies에 패키지를 추가하기 위해 npm install --save 패키지명 으로 설치했으나, npm@5 버전 이후 부터는 디폴트로 적용되므로 --save 옵션을 붙이지 않아도 된다.

* npm i 패키지명 으로 축약 사용 가능.

* npm install 패키지명@버전 으로 버전을 지정하여 설치 가능

npm install 주소 로 패키지 설치 주소를 지정하여 설치 가능

 

2. 패키지 여러개 설치

- 명령어:  npm install 패키지1 패키지2 패키지3 

: 여러개의 패키지를 동시에 설치한다.

npm i 패키지1  패키지2 패키지3 으로 축약 사용 가능.

 

3. 전역 설치

- 명령어:  npm install --global 패키지명 

: npm 자체가 설치되어 있는 폴더에 패키지를 설치하여 어디서나 참조할 있게 한다.

: 현재 프로젝트의 node_modules에 설치되지 않으므로, package.json에도 기록되지 않는다.

* 맥, 리눅스의 경우, sudo를 붙여서 sudo npm install --global 패키지명 으로 설치해야 할 수 있다.(권한 이슈)

* npm i -g 패키지명 으로 축약 가능

 

4. 개발용 설치

- 명령어:  npm install --save-dev 패키지명 

: package.json 파일의 devDependencies 항목에 추가되도록 설치한다.

* npm i -D 패키지명 으로 축약 가능

 

5. package.json 파일을 사용한 설치

- 명령어:  npm install 

: package.json 파일이 저장된 폴더에서 명령어를 실행하면, dependencies 항목에 기록된 패키지들을 모두 자동으로 설치해 준다.

: 이 기능을 사용하면, 프로젝트를 복사/백업할 때 모든 모듈 파일을 옮길 필요 없이 package.json 파일만 복사해두면 된다.

* npm i 로 축약 가능

 

6. 패키지 삭제

- 명령어:  npm uninstall 패키지명 

: node_modules 폴더에 설치된 패키지를 삭제한다. package.json의 dependencies 항목에서도 제거된다.

* npm rm 패키지명 으로 축약 가능


# 기타 NPM 명령어

1.  npm -version 

: npm 자체의 버전 체크

* npm -v 로 축약 가능

 

2.  npm install -g npm 

: npm 자체의 버전 업그레이드

* 맥, 리눅스의 경우 sudo를 앞에 붙여줘야할 수 있다.

 

3.  npm outdated 

: 업데이트 가능한 패키지가 있는지 체크

 

4.  npm update 패키지명 

: 패키지를 최신 버전으로 업데이트

 

5.  npm info 패키지명 

: 패키지의 상세 정보 파악

 

6.  npm search 검색어 

: npm 서버의 패키지 검색

 

7.  npm help 

: 명령어 목록 확인

* npm 명령어 help : 명령어에 대한 설명 및 옵션 정보 확인

 

8.  npm ls 

: 설치된 패키지들의 구조를 보여준다.

* npm ls 패키지명: 패키지와 관련된 구조만 노출

* npm ll : 더 상세한 페캐지 구조 정보 노출

 

9.  npx 패키지명 [옵션] 

: 전역 설치하지 않은 패키지를 전역처럼 콘솔에서도 사용할 수 있도록 해주는 명령어

: 즉, node_modules/bin 폴더에서 해당 패키지의 바이너리 파일을 찾아서 실행시켜 준다.

: 만약 해당 패키지가 없다면 임시로 다운로드 받아 설치하여 실행시켜준다.

* npx에 대한 내용은 길어질 수 있으므로 생략.

* 사용 예시: npx pm2 list


# package.json > scripts 실행 명령어

: package.json 파일의 scripts 항목에 다양한 명령어를 설정해두고 콘솔에서 실행할 수 있다.

1. start 명령어에 설정된 코드는  npm start  로 실행할 수 있다.

   - npm stop 으로 start한 걸 멈출 수 있다.

   - npm restart 으로 stop된 걸 재실행할 수 있다.

   - start 명령어를 별도 설정하지 않은 경우, node server.js 가 실행된다.

 

2. test 명령어에 설정된 코드는  npm test  로 실행할 수 있다.

 

3. 그 외 명령어에 설정된 코드는는  npm run 명령어  로 실행해야 한다.


# node.js 가 패키지를 참조하는 방식

: node.js에서 외부모듈(패키지)를 사용하면, 아래와 같은 순서로 패키지를 찾아간다.

 

1. 현재 실행 중인 폴더에서 찾는다.(최우선 순위)

2. 상위 폴더로 이동해서찾는다.

...

3. 전역 패키지가 설치된 폴더로 이동해서 찾는다.

 

 

댓글