[Node.js] 08 - npm(Node Package Manager)

2024. 4. 22. 05:42·Dev/Node.js

npm이란

✅ Node Package Manager

- 이미 있는 기능을 다시 구현할 필요가 없어 효율적(대부분 오픈 소스)

 

✅ 패키지

- npm에 업로드된 노드 모듈

- 패키지들 간에도 의존 관계가 있음

 

npm 스크립트

✅ npm run [스크립트명]

- 스크립트로 지정한 명령 실행. run 꼭 붙이기.

 

✅ npm [npm명령어]

- npm 명령어들은 run 없이 실행 가능

e.g. npm start


package.json

✅ 현재 프로젝트에 대한 정보와 사용 중인 패키지 이름 및 버전 정보를 담은 파일

- 동일 버전을 설치하지 않으면 문제 생김

- 노드 프로젝트 시작 시에 가장 먼저 package.json부터 만들고 시작해야 함

 

✅ npm inint --yes

- 기본 값으로 입력된 package.json을 생성하는 명령어. 프로젝트 시작 시 사용

 

✅ npm init

- 문답식으로 package.json 생성. 동일하게 프로젝트 시작 시 사용

 

✅ npm install 패키지이름(= npm i 패키지이름)

- 프로젝트에서 사용할 패키지 설치

- 설치한 패키지의 이름과 버전 정보가 package.json에 기록된다.


node_modules

✅ npm install 시 node_modules 폴더 생성

- 내부에 설치한 패키지들이 들어 있음

- express 외에도 express와 의존 관계가 있는 패키지들이 모두 설치됨

✅ package-lock.json도 생성되어 패키지 간 의존 관계를 명확하게 표시함


개발용 패키지 설치

✅ npm install --save-dev 패키지명(= npm i -D 패키지명)

- package.json 안에 devDependencies에 추가됨

- 아래는 npm i -D nodemon을 했을 경우 package.json 내용 일부. 맨 아래에 devDependencies가 추가된 것을 볼 수 있다.


글로벌(전역) 패키지 설치

✅ npm install --global 패키지명(= npm i -g 패키지명)

- 모든 프로젝트와 콘솔에서 패키지를 사용 가능

- package.json에 기록되지 않음. 기록이 되는 게 중요하게 때문에 글로벌로 하는 건 지양하자


SemVer(Semantic Versioning) - 패키지 버전 이해하기

✅ 노드 패키지의 버전은 SemVer 방식을 따름

- 노드에서 배포를 할 때 항상 버전을 올려야 함

- Major(주 버전): 하위 버전과 호환되지 않는 수정 사항이 생겼을 때 올림

- Minor(부 버전): 하위 버전과 호환되는 수정 사항이 생겼을 때 올림

- Patch(수 버전): 기능에 사소한 버그를 해결했을 때 올림

 

✅ 버전 기호

- ^1.1.1: 패키지 업데이트 시 minor 버전까지만 업데이트됨.(ver 2.0.0은 안 됨)

- ~1.1.1: 패키지 업데이트 시 patch 버전까지만 업데이트 됨.(ver 1.2.0은 안 됨)

- @latest: 최신을 의미

- @next: 가장 최신 배포판 사용 가능(불안정함)

- 알파/베타/RC 버전이 존재할 수도 있다.

 


ps. npm install 시 permission denied 에러가 난다면 맨 앞에 sudo를 붙이자! 이유를 각자 알아서@#!@#@!#

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

[Node.js] 10 - 노드 내장 객체 - console, process.env, nextTick  (3) 2024.04.27
[Node.js] 09 - CommonJS & ECMAScripts Module  (1) 2024.04.22
[Node.js] 07 - https와 http2  (0) 2024.04.22
[Node.js] 06 - REPL/JS 파일 사용법  (0) 2024.04.22
[Node.js] 05 - AJAX / JSON  (1) 2024.04.22
'Dev/Node.js' 카테고리의 다른 글
  • [Node.js] 10 - 노드 내장 객체 - console, process.env, nextTick
  • [Node.js] 09 - CommonJS & ECMAScripts Module
  • [Node.js] 07 - https와 http2
  • [Node.js] 06 - REPL/JS 파일 사용법
min8282
min8282
  • min8282
    min8282
    min8282
  • 전체
    오늘
    어제
    • 분류 전체보기 (110)
      • Security (33)
        • System & Network (2)
        • Application (5)
        • Cloud (20)
      • Dev (18)
        • Node.js (12)
        • Hadoop (3)
        • BOJ (2)
      • Web3 & Blockchain (2)
        • Web3 (2)
      • K-Shield.Jr (15)
      • Web Security Academy (3)
      • Wargame (13)
        • Dreamhack (3)
        • Bandit (10)
      • NS (16)
        • CTF (6)
  • 블로그 메뉴

    • 홈
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    메타코드
    systems manager
    aws lambda
    amazon s3 트리거
    정처기 필기
    aws 트리거
    티스토리챌린지
    ESC1
    정처기필기
    스마트 컨트랙트
    web security academy
    탈중앙화
    AWS CLI
    File Upload
    splunk db connect
    보안 그룹
    AWS SSM
    Session Manager
    Path Traversal
    web3
    정처기
    오블완
    메타코드M
    metacodem
    web3 보안
    metacode
    prepared statement
    스마트컨트랙트
    ELB
    정보처리기사
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
min8282
[Node.js] 08 - npm(Node Package Manager)
상단으로

티스토리툴바