Node.js의 패키지를 관리할 수 있는 도구로, 패키지 매니저를 통해 다른 개발자들이 만들어 제공하는 수많은 코드와 라이브러리를 손쉽게 설치, 삭제 및 관리할수 있다. 대표적인 패키지 매니저로 npm과 yarn 이 있다.
이 프로젝트의 이름, 버전, 사용법, 사용하기 위해 필요한 라이브러리, 플러그인 등의 외부 요소들을 모아서 json
형식으로 기재해놓은 목록이다.
package.json 파일의 내용은 대체로 이런 식이다
프로젝트를 내려받은 후, npm install
을 실행해 위 json 파일에 명시된 의존성 목록들을 설치할 수 있다.
앞서 이야기했듯 이 둘은 모두 Node.js의 패키지를 관리하기 위한 대표적인 도구이다. npm의 단점을 보완하기 위해 Facebook에서 만든 도구가 yarn 인 만큼 처음엔 차이가 있었으나, npm의 지속적인 업데이트로 현재 시점에서는 큰 차이가 나지 않는다고 하니 기호에 따라 선택해도 좋다.
단! 한 프로젝트에서는 한가지의 Package Manager만 사용하는게 좋다. 사용하는 패키지를 한 데 모아 관리하기 위한 도구를 굳이 헷갈리게 둘로 나눠서 사용할 이유가 없다.
두 가지 선택지가 남는다.
<script>
태그를 이용해 프로젝트에 포함시킨다.사실 막상 해보면 두 방법 다 어렵지 않고 오히려 간편하기도 하다. 볼륨이 작은 프로젝트라면 상황에 따라 CDN을 이용하는 방법이 나을 수 있을 것 같다. 하지만 계속해서 유지 및 보수해야하는 프로덕트를 만든다면 패키지가 업데이트될때마다 수작업으로 교체해줘야 하고 프로젝트가 이런 패키지를 몇개씩 포함한다면 이 작업에서 실수가 발생하지 않으리라는 보장도 없다.
의존성은 소프트웨어 A
의 구성 요소가 다른 구성 요소 B
의 존재에 의존하는 상황을 말한다. 예를 들어 myProject
가 API 통신에 axios
를 이용한다고 하면
myProject
는axios
에 의존성을 갖는다
라고 할 수 있으며, 외부 라이브러리, 모듈을 설치, 업데이트, 제거하는 일을 의존성 관리라고 한다.
.gitignore
파일은 프로젝트 파일중 git에 업로드하지 않을 파일의 목록이다. 이 파일을 생성하는 이유는 보안상의 문제 등 여러가지가 있지만 현재 토픽이 패키지 매니저인만큼 이 관점에서 다뤄보도록 하자.
프로젝트 디렉토리를 생성하고 git init
을 실행하면 현재 디렉토리를 기준으로 git 저장소가 생성된다. 개발을 진행하다 중간중간 커밋, 푸시를 해야하는데 이 때 .gitignore
파일을 생성해두지 않으면 node_modules
폴더까지 업로드되어버린다.
무시무시한 용량...
위의 이미지에서 보듯 node_modules
폴더의 용량은 상당하다. 그렇기 때문에 .gitignore
파일에 포함시켜야 한다. 이렇게 제외해둬도 레포지토리를 clone
해 온 뒤에 npm install
을 실행하면 내 로컬 디바이스에 저장되기 때문에 문제될 게 없다.
다음 번 포스팅에서는 package.json
파일에 기재된 다양한 필드를 다뤄보자.