NPM

비지·2023년 10월 16일
0

엘트

목록 보기
15/16

Node Package Manager

Node.js 프로젝트를 관리하는 필수적인 도구
온라인 저장소 + 커맨드라인 도구

NPM 온라인 저장소

수많은 오픈소스 라이브러리와 도구들이 업로드되는 저장소
필요한 라이브러리나 도구를 손쉽게 검색 가능.
Node.js의 인기로, 거대한 생태계를 보유.

커맨드라인 도구

프로젝트 관리를 위한 다양한 명령어를 제공

  • 저장소에서 라이브러리, 도구 설치
  • 프로젝트 설정 / 관리
  • 프로젝트 의존성 관리

프로젝트 생성하기

$npm init

프로젝트 디렉터리를 생성하고,
해당 디렉터리 안에서 npm init 명령어를 사용하면 몇 번의 질문을 통해 package.json 이라는 파일을 만들어 주고
이 디렉터리는 Node.js 프로젝트가 됨

package.json

프로젝트 관련 정보들이 저장되는 파일
이 파일을 직접 수정하거나 npm 명령어를 사용하여
프로젝트 정보를 수정할 수 있음

의존성 관리하기

프로젝트 내에서 사용하는 라이브러리를 관리하는 방법
프로젝트가 실행되기 위해 라이브러리에 의존하기 때문에
이러한 라이브러리들을 dependency(의존성)라고 이야기함

라이브러리란?

특정 기능을 수행하는 코드의 묶음
복잡한 기능을 직접 작성하지 않고, 다른 사람이 구현한 것을 사용하는 방법
Node.js에서는 패키지라고도 부름

npm install 명령어

npm install 명령어를 통해 프로젝트 의존성을 관리할 수 있음
npm install 명령어는 사용 방법에 따라 여러 용도로 사용 가능
(npm i 를 축약형으로 사용 가능)

  • 의존성 추가
  • 의존성 내려 받기
  • 개발용 의존성 추가
  • 전역 패키지 추가

프로젝트에 의존성 추가하기

$npm install [package-name]

필요한 패키지를 프로젝트에 추가할 수 있음
추가된 패키지는 package.json의 dependencies 안에 추가되며,
node_modules 디렉터리에 저장됨.

dependencies와 devDependencies

$npm install [package-name] --save-dev

npm은 개발용 의존성을 분리하여 관리할 수 있음
개발용 의존성이란 배포 전까지만 사용하는 의존성 (ex. 유닛 테스트 라이브러리)
--sava-dev 옵션을 이용하면 개발용 의존성을 추가할 수 있음
개발용 의존성은 packjage.json의 devDependencies에 추가됨

프로젝트에 의존성 내려받기

$npm install

기본적으로 node_modules 디렉터리는 코드관리나 배포 시에 업로드 하지 않음
의존성이 많아지면 용량이 너무 커지는 것과,
운영체제별로 실행되는 코드가 다른 경우가 존재하기 때문.

npm install 명령어를 아무 옵션 없이 사용하면
package.json에 정의된 dependencies와 devDependencies의 의존성을 node_modules 디렉터리에 내려받음

개발용 의존성으 렞외하고 내려받기

$npm install --production

프로젝트를 배포할 때에는 개발용 의존성을 같이 포함할 필요가 없음
package.json의 dependencies만 node_modules에 내려받음

package-lock.json

프로젝트에 의존성을 추가하면 package-lock.json이라는 파일이 생성됨
프로젝트에 의존성을 추가하면 자동으로 '^최신버전'으로 추가가 되는데,
의존성 버전이 갑자기 변경되지 않도록, 설치된 버전을 고정하는 역할을 함

전역 패키지 추가

$npm install [package-name] --global

패키지를 전역 패키지 디렉터리에 내려받음
커맨드라인 도구들을 주로 전역 패키지로 추가해서 사용
Ex) express-generator,pm2

로컬 패키지와 전역 패키지

로컬 패키지

package.json 에 선언되어 있고, node_modules에 저장된 패키지

전역패키지

npm install-g 를 통해 내려 받아, 전역 패키지 저장소에 저장된 패키지

전역 패키지도 프로젝트에서 사용할 수 있으나, 프로젝트의 의존성이 package.json 내에 명시적으로 선언되어 있는 것이 프로젝트 관리의 좋은 방향

의존성 삭제하기

$npm remove [package-name]

의존성 패키지를 삭제할 수 있음
package.json의 dependencies와 devDependencies에서 삭제하고 node_modules에서도 삭제

스크립트 실행하기

스크립트란 간단한 동작을 수행하는 코드
package.json 의 scripts에 선언된 스크립트를
npm run [script-name] 명령어로 실행할 수 있음

npm script를 사용하는 이유

npm script 내에선 의존성 패키지를 사용할 수 있음

자주 사용되는 스크립트

npm 스크립트엔 run을 제외하고 사용할 수 있는 주요 스크립트들이 있음

test - 코드 유닛 테스트 등에 사용
start - 프로젝트 실행
stop - 프로젝트 종료

run을 제외하고 사용할 수 있을 뿐, npm 내부적으로 코드를 제공해 주는 것은 아님

NPM 요약

명령어

  • npm init : 프로젝트 생성
  • npm install : 의존성 추가
  • npm remove : 의존성 삭제
  • npm run : 스크립트 실행

주요 파일/디렉터리

  • node_modules : 프로젝트 의존성 저장 디렉터리
  • package.json : 프로젝트 관리 ( 버전, 의존성, 스크립트, ...)
  • package-lock.json : 의존성 버전 확인
profile
나를 위한 업그레이드 아자아자

0개의 댓글