# 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. 전역 패키지가 설치된 폴더로 이동해서 찾는다.
'개발(Development) > JS(자바스크립트)' 카테고리의 다른 글
Node.js: Web Socket 통신 - ws모듈 사용 방법 (0) | 2021.07.02 |
---|---|
Javascript: URI, URL, QueryString과 인코딩/디코딩 정리 (0) | 2021.07.02 |
자바스크립트 로드 script 태그: async/defer 비동기 속성 (0) | 2021.06.30 |
Javascript 페이지 이동, 현재 주소 확인: window.location (0) | 2021.06.30 |
자바스크립트(JS): 서버 비동기 http 요청 및 데이터 전송(AJAX) (0) | 2021.06.27 |
댓글