Node.js_패키지 매니저(npm)

Node.js 2021. 7. 2. 15:15

(본 포스팅은 길벗의 'Node.js 교과서' 책을 공부하면서 작성되었습니다_내돈내산) 

  • npm(Node Package Manager)
    - 노드의 패키지 매니저
    - 다른사람들이 만든 소스코드들을 모아둔 저장소
    - 남의 코드를 사용하여 프로그래밍이 가능하며, 이미 있는 기능을 다시 구현할 필요가 없어 효율적임
    - npm install(또는i) 패키지명1, 패키지명2 로 한번에 여러가지 설치 가능
    - npm install --save-dev 패키지명 또는 npm i -D 패키지명 으로 개발용 패키지를 따로 설치할 수 있음. 
    (devDependencies에 추가됨)
    - npm install --global 패키지명 또는 npm i -g 패키지명으로 전역패키지를 설치할 수 있다. 모든 프로젝트와 콘솔에서 package를 사용할 수 있도록 해줌. 명령어로 사용하는 경우에 글로벌 방식으로 설치를 하기도 한다. 단점으로는 package.json에 저장이 안된다.
  • package.json: 현재 프로젝트에 대한 정보와 사용 중인 패키지에 대한 정보를 담은 파일
    - 같은 패키지라도 버전별로 기능이 다를 수 있으므로 버전을 기록해두어야 함.
    - 동일한 버전을 설치하지 않으면 문제가 생길 수 있음.
    - 노드 프로젝트 시작 전, package.json 부터 만들고 시작함(npm init명령어를 실행하면 자동생성됨.)
    - package.json 속성
     >> package name: 패키지의 이름
     >> version: 패키지의 버전.
     >> entry point: 자바스크립트 실행파일 진입점. 보통 마지막으로 module.exports를 하는 파일을 지정함. package.json의 main 속성에 저장됨.
     >> test command: 코드를 테스트할 때 입력할 명령어를 의미함. package.json script 속성안의 test속성에 저장됨.
     >> git repository: 코드를 저장해 둔 Git 저장소 주소를 의미함. 나중에 소스에 문제가 생겼을 때, 사용자들이 이 저장소의 방문해 문제를 제기할 수 있음.
     >> keywords 키워드는 npm 공식 홈페이지에서 패키지를 쉽게 찾을 수 있도록 해줌.
     >> license: 해당 패키지의 라이센스

  • package-lock.json
    : package.json 보다 더 정확하고 구체적인 버전정보다 있다(패키지의 dependencies 등도 전부 포함하고 있음)

  • node_modules
    - 설치된 패키지가 모여있는 폴더. 보통 관리를 따로하지 않고 배포할때 삭제하고 package.json 또는 package-lock.json 만 가지고 가면 된다.

  • npx
    - 글로벌로 설치하지 않은 패키지를 글로벌처럼 명령어로 사용할 수 있게 된다

  • SemVer 버저닝
    - Major(주 버전), Minor(부 버전), Patch(수 버전)
    - 노드에서는 배포를 할때 항상 버전을 올려야 함.
    - Major는 하위 버전과 호환되지 않는 수정사항이 생겼을때 올려줌
    - Minor는 하위버전과 호환되는 수정사항이 생겼을 때 올림
    - Patch는 기능에 버그를 해결했을 때 올림.
    - 버전기호
     >> ^1.1.1 : 패키지 업데이트 시 minor 버전까지만 업데이트 됨 (2.0.0 버전은 안됨)
     >> ~1.1.1 : 패키지 업데이트 시 patch 버전까지만 업데이트 됨 (1.2.0 버전은 안됨)
     >> 아무것도 안붙이면 전혀 업데이트 되지 않음(명시된 버전을 전부 고수함)
     >> @latest는 최신을 의미, @next로 가장 최신 배포판 사용가능(불안정), 패키지명 뒤에 '@버전'을 명시하면 해당버전으로 설치가 됨.

'Node.js' 카테고리의 다른 글

Node.js_Express 웹서버 만들기_2(미들웨어)  (0) 2021.07.03
Node.js_Express 웹서버 만들기_1  (0) 2021.07.02
Node.js_클러스터(Cluster)  (0) 2021.07.02
Node.js_쿠키와 세션  (0) 2021.07.02
Node.js_HTTP 모듈로 서버 만들기  (0) 2021.07.01
admin