자바스크립트 패키지 매니저 (Javascript Package Manager)
npm과 yarn은 자바스크립트 패키지 매니저이다.
- 패키지란, npm에 업로드된 노드 모듈을 의미한다.
- 다양한 자바스크립트 프로그램이 패키지라는 이름으로 npm에 등록되어 있고, 패키지가 다른 패키지를 사용할 경우 의존 관계를 갖는다.
- 패키지들을 사용하기 위해서는 다운로드, 설치, 업데이트, 의존성 관리, 제거 등 복잡한 상황들이 발생한다.
- 패키지 매니저는 이러한 과정들을 자동화하여 편리하고 안전하게 수행할 수 있도록 돕는다.
npm
- '노드 패키지 매니저'이다.
- 런타임 동안 노드 환경에서 쓰이는 다양한 패키지들을 관리한다.
- npm은 npm registry라고 불리는 공개적인 패키지들로 구성된 데이터베이스를 갖고있다.
yarn
- yarn은 npm의 부족한 부분들을 개선하기 위해 Facebook에서 개발되었다.
- npm구조에 동일하게 의존한다.
- 패키지 레지스트리에 대한 것은 바뀌지 않고, npm과 설치 절차가 바뀌었다.
npm VS yarn
npm과 yarn은 모두 Node.js 환경에서 사용되는 패키지 관리자이며, 모던 웹 개발에서 중요한 역할을 한다. 그러나 Google SEO 관점에서 볼 때, 이들 간의 차이는 직접적인 SEO 영향보다는 개발 프로세스와 성능에 더 큰 영향을 미친다.
속도와 성능
-
yarn:
- yarn은 병렬 패키지 설치 기능을 제공하여 npm보다 빠른 설치 속도를 가졌다.
- 이는 특히 대규모 프로젝트나 CI/CD 파이프라인에서 빌드 시간을 단축시키는 데 유리하며, 간접적으로 개발 효율성과 사이트 출시 속도에 영향을 줄 수 있다.
-
npm:
- npm은 버전 5 이후로 상당히 속도가 개선되었고,
package-lock.json
파일을 통해 정확한 버전의 의존성을 관리한다.
npm은 Node.js와 함께 자동으로 설치
되므로 추가 설치 과정이 필요 없다.
보안
-
yarn:
- yarn은
yarn.lock
파일을 사용하여 설치된 패키지의 정확한 버전을 추적한다, 이는 보안성 향상에 기여할 수 있다.
- 또한, yarn은 체크섬을 사용하여 패키지의 무결성을 검증한다.
-
npm:
- npm v6부터는
npm audit
명령어를 통해 프로젝트 의존성의 보안 취약점을 자동으로 검사하고 보고한다.
- 이는 개발자가 보안 문제를 식별하고 수정할 수 있게 하여, 최종 사용자에게 안전한 웹 경험을 제공하는 데 도움이 된다.
사용 편의성
-
yarn:
- yarn은 사용자 친화적인 메시지와 보다 직관적인 에러 로깅을 제공한다.
yarn why
같은 명령어를 통해 특정 패키지가 프로젝트에 포함된 이유를 파악할 수 있다.
-
npm:
- npm은 널리 사용되며, 많은 Node.js 개발자들이 사용한다.
- npm의 문서화와 커뮤니티 지원이 많다.
npm과 Yarn중 어떤 실행 엔진을 선택할 것인가?
Yarn에도 단점이 있다. 디스크 용량을 좀 더 많이 잡아먹는 편이다. yarn은 속도나 보안성 측면에서 npm보다 개선되었지만 용량을 많이 필요로한다.
npm도 개선된 버전이 계속 나오면서 속도는 yarn과 차이가 없다. 효율성 측면에서 많은 장점이 있으니 취향대로 선택하면 된다.