npm과 package.json

bin-lee·2021년 12월 31일
0

npm이란

파이썬의 pip처럼 노드에서 사용하는 패키지 매니저다. 다른 사람들이 이미 만들어 둔 소스 코드를 npm으로 설치한 후 사용할 수 있다.


package.json

현재 프로젝트에 대한 정보와 사용 중인 패키지에 대한 정보를 담은 파일이다. 같은 패키지라도 버전에 따라 기능이 다르고, 다른 버전을 사용할 경우 문제가 생길 수 있기 때문에 package.json에 버전을 기록해 둬야 한다. 📌 노드 프로젝트 시작 전 npm init으로 package.json을 만들고 시작했다.

💨 npm init으로 package.json 생성

package name: 패키지의 이름 작성
uthor: 작성자 이름
license: 오픈 소스인 MIT를 많이 사용

npm init 말고 json 형식을 따라서 직접 작성하는 것도 가능하다. 단, 직접 작성의 경우 꼭 마지막에 npm i를 해 주어야 설치가 마무리 된다!

💨 package.json의 구조

생성할 때 입력했던 정보들이 JSON 형식으로 들어가 있다.
"scripts" 안에 있는 명령어들은 npm run 명령어명으로 사용할 수 있다. start라는 시작 실행 명령어가 자주 쓰인다. (start는 run을 제외 가능하다)


npm i

💨 npm i로 패키지 설치

npm i 패키지명으로 패키지 설치를 할 수 있다. 설치를 마치면 package.json 파일에 "dependencies"가 추가된다.
이 안에는 패키지들의 버전이 기록되어 있다. 버전이 정확하게 기록되어 있어야 해당 버전으로 오류 없이 설치된다.

npm i -D로 -D 옵션을 붙이면 "devDependencies"가 추가된다. devDependencies는 개발할 때만 사용하는 패키지, dependencies는 배포 및 서비스까지 쓰이는 패키지로 구분하여 설치한다.

💨 npm i -g로 패키지 설치

-g는 글로벌로 설치(전역 설치)한다는 의미이다. 명령어로 쓸 수 있는 패키지들은 글로벌로 설치하는 편이다. 설치를 해도 dependencies에 따로 기록이 안 되기 때문에 협업자가 해당 패키지를 사용하는지, 사용하지 않는지 알 수 없다.
그래서 요즘은 처음부터 전역 설치를 하는 걸 기피하고 npm i 혹은 npm i -D로 설치한 후 npx를 붙여 사용한다. npx를 붙이면 글로벌 명령어로써 사용된다. 관리가 훨씬 용이해진다.


node.modules

node.modules에는 다운받은 패키지들이 들어가 있다. 그런데 설치하지 않은 패키지들이 섞여 들어 있는 경우가 있다. 이는 설치한 패키지가 dependencies로 필요로 하는 패키지들이 설치된 것이다.
이것저것 설치되어 있어 용량이 크기 때문에 배포할 때는 지워서 배포하고, 배포 후 npm i로 그 서버에서 재설치하는 방식으로 사용한다.


package-lock.json

dependencies로 설치했던 것들의 dependencies들까지 모든 버전을 정확하게 기록해 놓은 파일이다. package-lock.json은 잘 건드리지 않는 편이다.


+ SemVer 버저닝

노드 패키지의 버전은 SemVer을 따라서 버전을 세 자리 수로 표현한다. Major -> Minor -> Patch 순이며 하위 버전과 호환되지 않는 수정, 하위 버전과 호환되는 수정, 버그 해결이 되었을 때 각각 버전을 올린다.

profile
🚀 오늘 배운 건 오늘 적자

0개의 댓글