본문 바로가기
다양한 기술들/Node.js 관련

[패키지 매니저] npm, npx, yarn / package.json

by 예스p 2023. 6. 17.

패키지매니저

 Node.js 환경에서 라이브러리 및 메타데이터를 관리하는 방법을 알아본다.


 

npm 이란?

  • Node Package Manager
  • https://www.npmjs.com에서 필요한 라이브러리를 내려받아 설치하고 삭제하는 등의 관리를 해주는 프로그램
  • 실제 라이브러리와 라이브러리 명세파일을 따로 관리
    >> node_modules 폴더에 라이브러리를 내려받아 저장하고 package.json이라는 파일에 설치된 라이브러리의 정보를 적어 저장

 

 

npx 란?

  • Node Package Execute
  • npm에서 제공하는 도구로 실행과 사용에 도움을 줌.
  • 용도
       1. 로컬에 설치되어 있지 않은 패키지를 설치없이 실행
           >> 외부 패키지에 포함된 파일도 포함
       2. 로컬에 설치된 패키지가 있더라도 최신 버전을 실행

 

 

npmyarn

  • 공통점
    - node.js환경에서 어플리케이션의 패키지(라이브러리, 모듈, 프레임워크 등)을 관리하는 도구
    - 자바의 Maven, Gradle과 동일한 역할을 한다.
    - package.json 파일을 통해서 의존성 및 메타데이터를 관리한다.
    - lockfile로 마지막 시점의 정확한 의존성 트리를 저장한다.
  • 차이점
    - npm은 node.js 설치시 자동설치되지만  yarn은 'npm install yarn'으로 설치해야함.
    - yarn은 병렬설치가 가능하여 의존성 설치속도가 빠르다.
    - yarn은 패키지의 무결성을 검증하고 안전하지 않은 패키지를 식별하여 경고를 띄운다.
  • 사용법
    1. 프로젝트 디렉토리에서 명령줄 인터페이스(CLI)를 연다
    2. 'npm 명령어' 또는 'yarn 명령어' 형식으로 명령을 내린다.

 

 

package.json

  • npm init으로 생성된다
  • 프로젝트의 정보 및 기타 실행 스크립트(메타데이터)를 작성하고 
    프로젝트의 의존성(dependency) 정보와 버전 정보 저장한다
  • 포함내용
    - name : 프로젝트의 이름
    - version : 프로젝트의 버전
    - description : 프로젝트에 대한 간단한 설명
    - main : 프로젝트 진입점(entry point) 파일의 경로
    - scripts : 프로젝트에서 사용할 수 있는 명령어 스크립트를 정의
    - keywords : 프로젝트와 관련된 키워드
    - author : 프로젝트의 작성자
    - license : 프로젝트의 라이센스
    - dependencies : 프로젝트에 필요한 의존성 패키지
    - devDependencies : 개발 환경에서만 필요한 의존성 패키지
  • version range
    - 명시적 버전이 아닌 범위적 버전을 사용함으로써 유지보수에 편리성을 준다.
    - 범위 규칙은 Semantic Versioning(170번 포스팅에서 검색)을 따른다.
    - "*"를 쓰면 모든 버전을 허용하는 의미이다.
  • lockfile
    - npm의 package-lock.json 파일
      yarn의 yarn.lock 파일
    - package.json에 명시된 의존성 트리의 정확한 복제본을 저장
      >> 버전을 정확히 명시하여 여러 개발환경에서 동일하게 동작함을 보장한다.
    - npm/yarn에 의해서 node_modules나 package.json이 수정되는 경우 생성되거나 업데이트된다.
    - 개발자가 임의로 조작하지 않는다.

 

 


명령어

기본이 되는 npm의 명령어들을 익혀본다.


npm 명령어

  • 프로젝트 초기화
    *
    npm init 

    - 새로운 프로젝트를 초기화한다.
    - package.json 파일 생성됨
    -y : 사용자에게 대화형으로 프로젝트 정보를 입력받지 않고, 기본값으로 자동으로 설정
  • 종속성설치
    * npm install 패키지네임
      - node_modules 디렉토리에 해당 패키지를 설치한다.
      - 자동으로 package.json에서 종속성 관리가 된다.
      - add 명령어도 동일한 기능을 한다.
      -g : 전역으로 설치하는 옵션. 지정하지 않을 시 현재 작업중인 프로젝트의 디렉토리에 설치된다
       >> 다른 프로젝트의 의존선에 영향을 미치치 잖음
       --save-dev : 개발용 종속성인 devDependencies 섹션에 추가된다.
    * npm i (install)
      - package.json 기반으로 모든 종속성 설치
        단, package-lock.json이 있다면 해당 파일 기준으로 설치한다.
      - 새로운 종속성이 추가되거나 업데이트 될 시 package-lock.json을 업데이트 시킨다.
    * npm ci (continuous integration) 
      - package-lock.json 기반으로 모든 종속성 설치
      - 기존 node_modules 폴더를 삭제후 재설치함.
      - package-lock.json을 업데이트 시키지 않는다.
  • 어플리케이션 실행
    * npm start
      - 프로덕션 모드에서 애플리케이션을 실행하는 데 사용
      - package.json 파일 script 섹션의 'start' 스크립트를 실행
      - 일반적으로 'start' 스크립트는 주로 개발 서버를 실행하는 데 사용한다.
    * npm run dev
      - 개발 모드에서 애플리케이션을 실행하는 데 사용
      - package.json 파일 script 섹션의 'dev' 스크립트를 실행 
      - 'dev'는 기본으로 설정된 명령어가 아니기 때문에 run을 이용해서 실행한다.

 

 

 

 

 

 

 

'다양한 기술들 > Node.js 관련' 카테고리의 다른 글

[개요] 시작하기 / nvm  (0) 2023.05.10

댓글