npm & yarn

npm

Node Package Manager를 의미한다.
Node.js의 기본 패키지 관리자 역할로, Node.js를 설치하면 기본적으로 같이 설치된다.

자바스크립트 모듈들을 패키지화하여 모아둔 저장소이다.
즉, 필요한 자바스크립트 라이브러리를 관리해주는 도구라고 할 수 있다.

dependencies vs devDependencies

일반적으로 쓰이는 패키지들은 dependencies 항목에, 개발할 때만 필요한 패키지들은 devDependencies 항목에 명시한다.

빌드를 하고 배포를 할 때는 devDependencies에 있는 것들이 애플리케이션 코드에서 빠지게 된다.
➡️ 배포할 때는 빠져도 좋은 라이브러리들을 -D 옵션으로 설치한다.

  • webpack : 빌드 도구
  • eslint : 코드 문법 검사 도구
  • imagemin : 이미지 압축 도구

등의 라이브러리는 -D 옵션으로 설치하는 것을 권장한다.

package-lock.json

동일한 package.json 파일을 사용해도 시간과 장소에 따라서 서로 다른 버전의 패키지가 설치되는 문제를 패키지 잠금을 통해 해결할 수 있다.

yarn

yarn 역시 npm처럼 패키지 매니저이다.
npm이 여러 package를 설치할 때, 각각의 package를 완전히 설치하고 나서 다음 패키지가 설치하는 것과 달리 yar은 병렬로 처리한다. 따라서 성능과 속도 면에서 더 우수하고, 보안 면에서도 더 우수하다.

yarn.lock

npm과 똑같이 node_modules에 모듈들을 설치하고, package.json에 버전을 명시하고 의존성을 추적 관리한다.

그러나 패키지 잠금 파일의 이름은 package-lock.json이 아닌 yarn.lock이다.

yarn-berry

yarn-berry는 npm과 yarn의 비효율적인 매니징 방법을 개선한 새로운 패키지 관리 시스템이다.
yarn의 개발자가 만들었다. 즉, 사실은 yarn v2이다. 그렇기에 yarn을 설치하면 기본적으로 yarn-berry가 설치된다.

yarn-berry는 모듈 설치시 node_modules가 아닌 .pnp.cjs 파일을 생성한다.
.pnp.cjsnode_modules보다 훨씬 작은 용량을 차지하고, 비효율적인 의존성 검색을 해결했다.

프로젝트 폴더에서 yarn init -y로 초기화 후 yarn set version stable 명령어 입력 시 berry를 사용할 수 있다.

추가로 읽으면 좋은 글

참고


Written by정선아
🌱 공부한 것을 기록하여 성장하기 위한 블로그입니다.

GitHubGmail