npm & npx & yarn 알고 쓰자

Yeji·2023년 9월 6일
0

파이썬에서는 pip, 자바스크립트 혹은 Node.js 기반 프로젝트에서는 npm 등 애플리케이션을 개발하는 사람이라면 누구나 패키지 관리자를 이용했을 것이다.

다들 패키지 관리자, 패키지 어쩌고 하는데 도대체 패키지가 정확히 뭘 의미할까.

패키지

패키지란 공유되고 재사용될 수 있는 소프트웨어 모듈 또는 라이브러리를 말한다.

패키지는 프로그래밍 언어나 플랫폼에 종속적일 수 있으며 패키지를 사용했을 경우 손쉽게 원하는 기능을 구현할 수 있고 개발 과정에서의 생산성도 향상된다.

패키지 관리자

패키지의 설치, 제거, 업데이트 등 패키지 관리를 자동화하는 역할을 수행한다.

파이썬을 기반으로 하는 numpy, pandas, Django 등의 경우 pip 패키지 관리자를 사용해 Python 모듈과 라이브러리를 사용할 수 있다.

JavaScript 및 Node.js를 기반으로 하는 React, Vue, Next.js 등은 npm 패키지 관리자를 사용해 JavaScript 모듈과 라이브러리를 손쉽게 가져와 사용할 수 있다.

역할

패키지 관리자가 존재하기 전에 개발자들은 사용하고 싶은 패키지를 직접 다운받아 프로젝트에 설치하고, 패키지의 의존성 또한 직접 관리해야 했다. 프로젝트에 사용하는 패키지의 수가 많아질수록 이는 매우 귀찮은 작업이 될 것이다.

패키지 관리자는 이 귀찮은 일을 알아서 대신 해준다.

1. 코드 재사용

누군가가 작성한 코드를 손쉽게 가져와 사용할 수 있다.

프로젝트에 캐러셀을 적용하고 싶을 때 직접 구현할 필요 없이 누군가 배포해놓은 캐러셀 패키지를 설치해 사용하면된다. 정-말 빠르게 프로젝트에 이런 저런 기능을 추가할 수 있다.

2. 의존성 관리

애플리케이션이 필요로 하는 패키지나 라이브러리의 의존성을 자동으로 관리해준다.

내가 설치한 어떤 패키지의 의존 관계에 변화가 생겼을 때 패키지 관리자는 이를 추적해 자동으로 업데이트해 개발 편의성을 증대시킨다.

3. 버전 관리

패키지 관리자는 설치된 패키지의 버전을 관리하며 자동으로 애플리케이션에 적절한 버전을 적용시키기도 한다. 이를 통해 애플리케이션의 호완성을 유지하고 애플리케이션을 안전하게 관리한다.


터미널에 수없이 입력했던 npm 부터 시작해 가끔 사용하는 npx, 그리고 공식 문서에서 npm옆에 자주 등장하던 yarn이 각각 어떤 것을 의미하는지 알아보자.

1. npm (Node Package Manager)

JavaScript 및 Node.js 프로젝트를 위한 패키지 관리 도구다.

Node.js 설치시 npm도 함께 설치되며 가장 많이 사용되는 도구다.
package.json 파일에 정의된 패키지 목록을 기반으로 패키지를 설치하거나 업데이트한다.

2. npx (Node Package eXecutor)

패키지 설치 없이 실행만 시킬 수 있는 도구다.

npm 5.2.0 이상 버전을 설치했을 경우 npx도 함께 설치된다.

npx 명령어는 먼저 해당 패키지를 찾아 설치되었는지 확인한다. 설치되었을 경우 바로 실행시키며, 설치되지 않은 경우 npm registry에서 가져와 실행만 시킨다.

패키지 설치 없이 실행만 시키기 때문에, 한 번만 특정 패키지를 실행시킬 경우 사용할 수 있다.

3. yarn (Yet Another Resource Negotiator)

2016년 Facebook에 의해 개발된 JavaScript 및 Node.js 기반 프로젝트의 패키지 관리자 도구다.

당시 version locking이 부재했던 npm의 단점을 보완하고, 더 안정적이고 효율적인 패키지 관리를 위해 개발되었다. npm 명령어를 통해 별도로 설치해야 한다.

그런데 이후에 npm도 많이 보완되면서 yarn이 npm을 완전히 대체하기엔 어렵다는 의견이 많다.

4. npm vs yarn

4-1. 패키지 설치 속도

npm은 패키지를 순차적으로 설치하지만 yarn은 병렬적으로 설치한다. 따라서 패키지 설치 속도 측면에서는 yarn이 2배 이상 빠르다고 한다.

yarn과 npm 모두 package.json을 참조해 패키지를 설치하며, 설치한 패키지를 로컬에 캐싱해 동일한 패키지가 다시 다운로드되지 않도록 한다.

4-2. 의존성 관리

yarn은 yarn-lock.json 파일을 생성해 의존성을 관리한다. 이전에 npm은 이런 파일이 없어 패키지 종속성 문제가 많았지만 package-lock.json을 도입해 이를 보완했다.

lock 파일에는 패키지의 하위 패키지의 버전을 정확히 명시해 의존성을 관리한다.

출처

https://www.geeksforgeeks.org/what-are-the-differences-between-npm-and-npx/?ref=lbp

https://www.freecodecamp.org/news/npm-vs-npx-whats-the-difference/

https://www.geeksforgeeks.org/difference-between-npm-and-yarn/

https://phoenixnap.com/kb/yarn-vs-npm

profile
채워나가는 과정

0개의 댓글