TIL 231101 - npm, yarn

송용승·2023년 11월 1일
3

TIL

목록 보기
9/29

Today I Learned

Package Manager

Node.js의 패키지를 관리할 수 있는 도구로, 패키지 매니저를 통해 다른 개발자들이 만들어 제공하는 수많은 코드와 라이브러리를 손쉽게 설치, 삭제 및 관리할수 있다. 대표적인 패키지 매니저로 npmyarn 이 있다.

package.json?

이 프로젝트의 이름, 버전, 사용법, 사용하기 위해 필요한 라이브러리, 플러그인 등의 외부 요소들을 모아서 json 형식으로 기재해놓은 목록이다.

package.json 파일의 내용은 대체로 이런 식이다

프로젝트를 내려받은 후, npm install 을 실행해 위 json 파일에 명시된 의존성 목록들을 설치할 수 있다.

npm, yarn

앞서 이야기했듯 이 둘은 모두 Node.js의 패키지를 관리하기 위한 대표적인 도구이다. npm의 단점을 보완하기 위해 Facebook에서 만든 도구가 yarn 인 만큼 처음엔 차이가 있었으나, npm의 지속적인 업데이트로 현재 시점에서는 큰 차이가 나지 않는다고 하니 기호에 따라 선택해도 좋다.

단! 한 프로젝트에서는 한가지의 Package Manager만 사용하는게 좋다. 사용하는 패키지를 한 데 모아 관리하기 위한 도구를 굳이 헷갈리게 둘로 나눠서 사용할 이유가 없다.

패키지 매니저가 없다면

두 가지 선택지가 남는다.

  • CDN(contents delivery network)을 이용한다
  • 파일을(있다면) 직접 다운로드 받아 <script> 태그를 이용해 프로젝트에 포함시킨다.

사실 막상 해보면 두 방법 다 어렵지 않고 오히려 간편하기도 하다. 볼륨이 작은 프로젝트라면 상황에 따라 CDN을 이용하는 방법이 나을 수 있을 것 같다. 하지만 계속해서 유지 및 보수해야하는 프로덕트를 만든다면 패키지가 업데이트될때마다 수작업으로 교체해줘야 하고 프로젝트가 이런 패키지를 몇개씩 포함한다면 이 작업에서 실수가 발생하지 않으리라는 보장도 없다.

의존성 관리

의존성은 소프트웨어 A 의 구성 요소가 다른 구성 요소 B 의 존재에 의존하는 상황을 말한다. 예를 들어 myProject 가 API 통신에 axios를 이용한다고 하면

myProjectaxios 에 의존성을 갖는다

라고 할 수 있으며, 외부 라이브러리, 모듈을 설치, 업데이트, 제거하는 일을 의존성 관리라고 한다.

.gitignore

.gitignore 파일은 프로젝트 파일중 git에 업로드하지 않을 파일의 목록이다. 이 파일을 생성하는 이유는 보안상의 문제 등 여러가지가 있지만 현재 토픽이 패키지 매니저인만큼 이 관점에서 다뤄보도록 하자.

프로젝트 디렉토리를 생성하고 git init 을 실행하면 현재 디렉토리를 기준으로 git 저장소가 생성된다. 개발을 진행하다 중간중간 커밋, 푸시를 해야하는데 이 때 .gitignore 파일을 생성해두지 않으면 node_modules 폴더까지 업로드되어버린다.

무시무시한 용량...

위의 이미지에서 보듯 node_modules 폴더의 용량은 상당하다. 그렇기 때문에 .gitignore 파일에 포함시켜야 한다. 이렇게 제외해둬도 레포지토리를 clone 해 온 뒤에 npm install 을 실행하면 내 로컬 디바이스에 저장되기 때문에 문제될 게 없다.

다음 번 포스팅에서는 package.json 파일에 기재된 다양한 필드를 다뤄보자.


profile
웹 프론트엔드 개발을 익히고 있습니다.

0개의 댓글