1. npm (node pakage manage)
- 자바스크립트 패키지 매니저
- Node.js 에서 사용할 수 있는 모듈들을 패키지화하여 모아둔 저장소 역할 + 패키지 설치/관리를 위한 CLI 제공
- 필요한 패키지를 검색해서 설치할 수 있고, 자신이 만든 패키지를 올릴 수도 있음
추가로 나는 패키지 / 모듈 / 라이브러리의 차이점을 잘 몰랐는데,
- 라이브러리는 여러 패키지와 모듈들을 모아놓은 것
- 패키지는 특정 기능과 관련된 여러 모듈을 한 폴더 안에 넣어 관리하는 것
- 모듈은 함수, 변수 등을 모아놓은 것
그래서 라이브러리 >= 패키지 >= 모듈이라고 생각하면 될 것 같다.
1.1. npm 커맨드
npm [명령어] [패키지명] [옵션]
설치
npm install [패키지명]
패키지명 뒤에 @version 을 붙이면 특정 버전 설치 가능
npm install [패키지명]@version
--global (또는 -g)
global 은 말그대로 "전역" 이라는 뜻이며, 이 옵션을 사용해서 설치하면 모든 디렉토리에 설치된다.
하지만, 패키지를 사용하지 않는 디렉토리에 설치되는 것은 불필요한 일이므로 꼭 필요할 때만 이 옵션을 사용하자.
(-g 옵션없이 설치하면 설치를 진행한 디렉토리에만 설치됨)
npm install [패키지명] -g
대신 전역으로 설치하면 pakage.json 에 기록이 되지 않기 때문에 협업 환경에 좋지 않다.
삭제
npm uninstall [패키지명]
--save-dev (또는 -D)
특정 패키지는 소프트웨어를 개발할 때는 필요하지만 소프트웨어 배포 시에는 필요하지 않다. 이런 패키지들을 설치할 때는 --save-dev 옵션을 사용하는 것이 좋다.
이 옵션을 사용하여 설치하면 설치한 패키지가 dependencies 필드에 기록되는 것이 아니라 devDenpendencies 라는 필드에 기록되는데, 이 필드는 개발할 때만 사용하는 개발용 의존 패키지를 명시한다.
npm install [패키지명] --save-dev
npm list (또는 npm ls)
현재 디렉토리 안에 설치된 패키지 목록을 보여준다. -g 옵션을 사용하면 전역 설치된 패키지 목록을 볼 수 있다.
npm list
npm list -g
2. pakage.json / pakage-lock.json / node_modules
Node.js 프로젝트에서는 많은 패키지를 사용하게 되고 패키지의 버전도 빈번하게 업데이트 되므로 패키지를 일괄 관리할 필요가 있다.
npm 은 pakage.json 파일을 통해서 프로젝트 정보와 패키지의 의존성(dependency)를 관리한다.
패키지를 설치하면 디렉토리 안에 node_modules 폴더와 pakage.json, pakage-lock.json 파일이 생겨난다.
node_modules
-> 설치한 모듈이 저장되는 곳
-> 디렉토리에 npm 으로 처음 패키지를 설치하면 이 폴더가 생겨나고, 패키지를 설치할 때마다 이 폴더 안에 패키지가 저장됨
pakage.json
-> 현재 패키지에 대한 정보가 기록되어 있는 곳
-> dependencies 필드에 설치한 패키지(모듈)들의 정보가 적혀있음
pakage-lock.json
-> pakage.json 파일에는 내가 설치한 패키지+버전만 기록되어 있지만, pakage-lock.json 파일에는 내가 설치한 패키지와 dependency 로 설치된 패키지들과 각 패키지의 버전이 정확하게 기록되어 있음
그렇다면 이 파일은 왜 필요할까?
-> node_modules 폴더는 용량이 굉장히 크기 때문에 이 폴더를 공유하는 대신 pakage.json 파일을 공유한다.
공유 받고 npm install 명령어를 치면 pakage.json 파일에 명시된 모든 의존 패키지를 한번에 설치할 수 있다.
'TIL with Programmers' 카테고리의 다른 글
[TIL] 9/2 parseInt, params, query, Destructuring 문법, Map, 네이밍케이스 (0) | 2024.09.02 |
---|---|
[회고록] 3주차 회고록 (0) | 2024.08.30 |
[TIL] 8/30 express 사용하기, json 객체, params (0) | 2024.08.29 |
[TIL] 8/29 모듈, 라이브러리, 프레임워크, npm, Node.js 특징 (4) | 2024.08.28 |
[TIL] 8/28 API(Application Programming Interface), REST API, HTTP 바디 (3) | 2024.08.27 |