lgvv98

[Node.js] #5 패키지 매니저 본문

🛰️ Node.js

[Node.js] #5 패키지 매니저

lgvv 2023. 7. 23. 11:58

패키지 매니저

 

모든기능 다 구현하는거 너무나도 벅참.

그래서 많은 부분을 미리 만들어둠.

 

그런 것들이 공개되어 있는 서버인 npm이라는 패키지 알아볼 예정.

 

# npm 알아보기

 

Node Package Manager의 약자임.

대부분의 자바스크립트 패키지는 여기 있음.

 

대부분 오픈 소스여서 노드 사용해서 웹 개발에 많으 도움이 된다.

 

# Package.json으로 패키지 관리하기.

 

패키지 하나씩 추가 하다보면 어느순간 100개가 넘음.

패키지마다 고유 버전 있어서 어딘가에 기록해야 한다.

따라서 노드 프로젝트 시작 전에 폴더 내부에 무조건 package.json을 만들고 시작해야 한다.

 

npm init

위에 입력해서 세팅가능

프로젝트 이름, 버전, 설명은 package.json, author를 입력해서 만든다.

정보 다 입력하면 yes누르기.

 

 

개발용 패키지를 설치할 수도 있음.

npm install --save-dev nodemon

소스 코드가 바뀔 때마다 자동으로 노드를 재실해주는 패키지

 

여러개 패키지 설치할 때는

npm install [패키지 1] [패키지2] ...

 

아래를 보자

// package.json
{
	...
    "peerDependencies" { 
    	"jQuery": "^3.0.0"
    }
}

패지키 jQeury 버전을 직접 import하지 않아도 3버전이 있다고 생각하겠다는 말임.

 

근데 디펜던시에 다른 버전이 걸리면 어떻게 될까?

이를 해결하는 방법은 세가지가 있는데,

 

npm i --force로 강제로 모든 버전을 맞춘다.

재설치한다.

버전을 맞춘다.

등이 있는데, 애초에 겹치는 패키지 설치하지 말 것.

 

패키지에 오류가 있으면 수정하면 된다.

근데 재설치하면 다시 초기화되는데 

npm i patch-package로 수정한다. -> 영구 반영된다.

 

# 패키지 버전 이해하기.

노드버전 항상 세자리임.

SemVer 방식의 버전 넘버링을 따르기 때문이다.

 

x.y.z version으로 표현

처음자리는 major 버전임.

0이면 초기 개발 중이라는 뜻 1부터는 정식 버전

메이저 버전은 하위 호환이 안 될 정도로 패키지의 내용이 수정되었을 때 올린다.

 

두번째 자리는 minor qjwjsdla

1.5.0에서 1.6.0으로 올렸을 때 아무 문제도 없어야 한다.

 

세번째 patch 버전이다.

새로운 기능이 추가 되었다기 보다, 기존 기능에 있어 수정한 것을 내놓았을 때 패치 버전을 올린다. 당연히 아무 문제도 없어야 한다.

 

npm i express^@ 1.1.1이라면 1.1.1이상 2.0.0 미만이 설치된다.

~기호를 사용한다면 1.1.1이상 1.2.0 미만

 

# 기타 npm 명령어

npm outdated로 업데이트 할 수 있는 패키지가 있는지 확인할 수 있음.

current와 wanted가 다르면 업데이트가 필요한 경우임

npm update [패키지이름]으로 업데이트 가능

Comments