NPM과 package.json

정민교·2023년 8월 21일
0

Node.js

목록 보기
2/3

📒NPM?

npm is the world's largest software registry. Open source developers from every continent use npm to share and borrow packages, and many organizations use npm to manage private development as well.

공식문서 document에 나와있는 설명입니다.

npm은 세계에서 가장 큰 소프트웨어 저장소이고, 모든 개발자들이 저장소에 저장된 패키지들을 npm을 이용하여 공유하고 사용할 수 있습니다.

물론 오픈 소스로 하지 않고 private으로도 가능하다고 합니다.

npm을 이용하면 정말 쉽게 디펜던시(라이브러리) 관리가 가능합니다. npm을 설치하면 자동으로 npx가 따라 설치됩니다.

보통은 npm install 명령어를 통해 npm repository에 있는 라이브러리들을 로컬 PC에 다운로드해서 사용하는데요.

npx를 사용하면 npm repository에 있는 라이브러리를 따로 설치하지 않고 바로 실행할 수 있습니다.

📒package.json

package.json 파일은 우리 프로젝트에서 사용하는 모든 라이브러리에 대한 정보와 프로젝트 자체에 대한 정보들을 가지고 있습니다.

즉, 프로젝트에 대한 메타데이터를 가지고 있는 파일입니다.

npm init

npm init 명령어를 통해 package.json 파일을 초기화 할 수 있습니다. 물론 직접 만들어도 됩니다.

📒node_modules

우리가 npm으로 어떤 라이브러리를 하나라도 다운받는다면 node_modules를 폴더가 생성됩니다.

npm repository에서 해당 라이브러리의 소스코드를 다운받아 node_modules 폴더에 저장합니다.

사용하는 라이브러리가 많으면 많을수록 node_modules 폴더의 크기가 커집니다.

따라서 github같은 버전 컨트롤 시스템의 플랫폼 서비스를 통해 협업을 한다면, node_modules와 같은 폴더는 .gitignore에 추가해주는게 좋습니다.

다른 사람들은 프로젝트를 clone해서 npm install 명령어를 통해 package.json에 명시된 라이브러리를 모두 clone한 로컬 프로젝트에 다운로드 받을 수 있습니다.

📒버전 관리

1 . 0 . 0

Major . Minor . Patch 형태로 라이브러리의 버전 관리를 진행합니다.

Patch 버전 정보 업데이트는 보통 사소한 버그 등을 수정했을 때 업데이트합니다.

Minor 버전 정보 업데이트는 작은 기능이 추가되거나 하는 경우에 업데이트합니다.

Major 버전 정보 업데이트는 기존 코드에서 대대적인 수정(기존 api의 사용법이 달라지거나, 기능이 달라지는 경우)이 발생하는 경우에 업데이트합니다.

정말 관리가 잘된 라이브러리는 Major 버전이 달라져도 기존 api의 사용법이 달라지거나 하는 경우가 없어서 바로 업데이트해도 상관 없는 경우도 있습니다.

하지만 대부분은 Major 버전 업데이트 같은 경우는 이전 버전과는 거의 새로운 라이브러리 수준의 업데이트(api 사용 방식의 변화 등)가 이루어지는 경우 하기 때문에

무작정 사용중인 라이브러리를 업데이트하면 에러가 발생하거나 예상하지 못한 동작들이 발생하는 경우도 있습니다.

이러한 버전관리를 semantic versioning이라고 합니다.

semantic versioning
semver-npmjs

📒package-lock.json

package-lock.json 파일에는 package.json 파일에서 허용한 라이브러리 버전 중에서 어떤 버전을 설치했는지 정확히 기록해놓습니다.

📒npm 사용하기

npm install <pkg> #-g(전역으로 설치)

npm install 명령어를 통해 패키지 설치가 가능하고, -g 옵션으로 전역 설치 또한 가능합니다.


npm list #-g

npm list 명령어로 설치된 라이브러리들을 확인할 수 있으며, -g 옵션으로 전역으로 설치된 패키지도 확인이 가능합니다.


npm view <pkg>

npm view 명령어를 통해 라이브러리에 대한 정보를 확인할 수 있습니다. 상세 정보 확인이 가능


npm uninstall <pkg>

npm uninstall 명령어로 설치한 라이브러리를 제거할 수도 있습니다.


npm outdated

설치된 라이브러리 중 업데이트가 필요한 라이브러리를 확인할 수 있습니다.

Current Wanted Latest Location 정보가 차례로 나오는데

CurrentWantedLatestLocation
현재 버전원하는 버전최신 버전설치된 위치

이렇게 볼 수 있습니다.

우리가 ~, ^, * 등으로 원하는 패치, 마이너, 메이저 버전의 범위를 우리가 원하는 대로 설정할 수 있는데 그 버전을 의미합니다.

~1.12.1: 메이저와 마이너 버전은 고정하고 패치 버전까지 자유롭게 허용 (즉 1.12은 고정하고 1.12.1이상의 버전 허용)
^1.12.1: 메이저 버전은 고정하고 마이너 버전까지 자유롭게 허용(즉 1.은 고정하고 12.1 이상은 다 허용)


npm update #<pkg>

update 해야하는 라이브러리를 Wanted 버전까지 업데이트가 가능합니다.

혹은 특정 라이브러리만 골라서 업데이트할 수도 있습니다.

profile
백엔드 개발자

0개의 댓글