Node.js package

airbus·2025년 2월 12일

프로그래머스

목록 보기
10/93

NPM

(Node Package Manager)
package : npm에 업로드 된 Node Module 입니다.

npm은 자바스크립트용 패키지 매니저 입니다. 모듈들을 모아두는 저장소의 역할을 합니다.

package.json

  • Node.js 에서 프로젝트를 진행하면서 필요한 많은 패키지들을 사용, 업데이트를 하기에 패키지의 관리의 필요성이 있습니다.
  • 모듈이, 다른 모듈을 사용하는 것처럼, 패키지도 다른 패키지를 사용할 수 있습니다. 이러한 관계를 의존 관계라고 합니다.
  • 의존 관계의 패키지들은 파일의 유무에 따라 실행이, 버전에 따라 기능이 다를 수 있습니다. 이러한 것들의 버전을 관리해주는 파일이 package.json입니다.

위에서의 이유로 Node 프로젝트를 시작할 때는 프로젝트 폴더 내부에 package.json을 만들고 시작해야 합니다.

package.json 생성

  • npm init 을 입력하면 다음과 같은 내용이 나옵니다.
package name프로젝트 이름
version프로젝트 버전
description프로젝트 설명
entry point자바스크립트 실행 파일 진입점
test command코드를 테스트 할 때 입력할 명령어
git repository코드를 저장해둔 Git 저장소 주소
keywords프로젝트 검색할 때 참조되는 키워드
license해당 패키지의 라이센스
  • name, version : 패키지의 고유성을 판단합니다. (생략할 수 없습니다.)
  • dependencies : 해당 프로젝트가 의존하는 패키지들의 이름과 버전을 명시합니다.

보다 자세한 package 명령어는 아래 블로그를 참고해주세요
package.json과 의존성 관리

package 설치, 업데이트, 확인, 삭제

설치

  • npm install [@<scope>/] <name>@<tag/version/version range>

  • 패키지 스코프는 일종의 네임스페이스 입니다. // 패키지명이 중복되는 경우 충돌을 방지해줍니다. 보다 자세한 내용은 다음을 참고 3.1

  • intall, i, 그리고 add 모두 같은 의미와 기능을 합니다.

  • 패키지명 뒤쪽에 태그, 버전, 버전범위를 지정할 수 있씁니다.
    없는 경우에는 latest(최신)태그를 기본값으로 사용합니다.

  • install 옵션

    • npm install 패키지명 - 로컬 설치, 해당 프로젝트에서만 사용합니다.
    • npm install -g 패키지명 - 전역 설치, 모든 프로젝트에서 사용할 수 있습니다. (협업시 권장하지 않음)
    • npm install --save-dev 패키지명 - 패키지 설치와 함께 package.json의 devDependencies에 설치된 패키지와 버전이 기록됩니다. // --save-dev => --save-d 로 줄여서 사용가능합니다.
    • npm install - package.json의 모든 의존 패키지를 한번에 설치합니다.
dependencies : 해당 프로젝트가 의존하는 패키지들의 이름과 버전을 명시.
devDependencies : 개발 시에만 사용하는 개발용 의존 패키지를 명시. (개발 단계에서만 필요하고 배포할 필요는 없음)
공유/배포 : node_modules는 제외하고 업로드 합니다. 필요시 npm install하여 package.json에 명시된 모든 의존 패키지를 한번에 설치할 수 있습니다.

업데이트

  • update 옵션
    • npm update 패키지명 - 패키지를 업데이트 합니다.
    • npm update 패키지명 -g - node가 설치되어 있는 디렉토리의 의존성 패키지를 업데이트 할 때 사용합니다.
      - 패키지명이 없으면 package.json에 정의한 의존성 패키지들 전부를 업데이트 합니다.

패키지 확인

  • list 옵션
    • npm list - 패키지 목록을 확인합니다. (설치된 모든)
    • npm ls - 패키지 목록을 확인합니다.
    • npm ls [@scope/] 패키지명 - 특정 패키지가 설치되어 있는지 확인합니다.

    • npm list -g - 전역 설치된 패키지 목록을 확인합니다.
    • npm list --depth=0 전역 설치된 패키지목록의 버전 정보만 확인합니다.

    • npm root -g - 전역 패키지 설치 폴더를 확인합니다.

    • npm list --depth=0 - 버전 정보만 출력합니다.
    • npm list --json - .json 형식으로 출력합니다.
    • npm list --long - 한 줄로 출력합니다.

버전

  • 특정 버전 설치
    • npm install 패키지명@n.n.n - n.n.n 버전에 해당하는 패키지를 설치합니다
    • npm install 패키지명@lasteset - 최신 버전을 설치합니다.

  • 버전 확인
    • npm -v - 설치된 npm의 버전을 확인합니다.
    • npm outdated - 현재 설치된 패키지의 버전의 변화가 있는지 확인합니다.
    • npm show 패키지명 version - 패키지의 최신 버전을 확인합니다.

패키지 버전 올림

  • package.json 의 버전을 올립니다. 참고
    • npm version patch - 패치 버전을 올립니다.
    • npm version minor - 마이너 버전을 올립니다.
    • npm version major - 메이저 버전을 올립니다.

삭제

  • 패키지 삭제
    • npm uninstall 패키지명 - 로컬, 개발 패키지를 제거합니다.
    • npm uninstall -g 패키지명 - 전역 패키지를 제거합니다.

기타

  • 패키지 검색 : npm search 패키지 or npmjs.com

Yarn

페이스북에서 npm의 용량, 패키지의 내려받기 속도, 보안 문제의 한계를 개선하여 만든 패키지 매니져입니다.

  • yarn2의 경우 PnP(Plug'n'Play)전략을 사용하여. [node_modules]를 사용하지 않고 의존성 패키지를 관리합니다. (패키지의 단순화)
  • 의존성 찾기는 .pnp.cjs에 정리하고, 실제 의존성 패키지 파일은 압축 파일의 형태로 [.yarn] 디렉토리 아래의 [cache]디렉토리에 저장합니다.
  • 의존성 패키지를 코드 저장소에 바로 저장하면, 추후에 서버 배포 시 패키지를 설치를 하지 않아도 됩니다. 제로설치(zero install).
    └ 서버에 소스 코드를 배포할 때 패키지도 같이 설치가 됩니다. 패키지 설치 시점에 따라 버전이 달라져서 버그가 발생하는 일도 없어지게 됩니다.

0개의 댓글