자바스크립트 패키지 매니저 NPM, YARN, NPX 비교

이번 포스팅은 자바스크립트 패키지 매니저인 NPM와 YARN 그리고 자바스크립트 패키지 실행자 NPX에 대해서 설명 및 비교하는 시간을 가져보겠습니다.

자바스크립트 패키지 매니저 NPM

NPM(Node Package Manager)은 자바스크립트 프로그래밍 언어를 위한 자바스크립트용 패키지 매니저입니다. Node.js를 설치하면 자동으로 설치가 됩니다. [node.js 설치 및 npm 명령어]는 아래 포스팅을 참고해 주세요.

NPM의 장점으로는 글로벌 최대 규모의 패키지들을 보유하고 있어서 Node 플랫폼에서는 절대 강자로 볼 수 있다. 단점으로는 보안 문제와 속도가 느린 점(패키지가 많아 빌드 성능 느려짐) 그리고 의존 패키지의 버저닝 이슈 문제가 있습니다.

최신 자바스크립트 패키지 매니저 YARN

YARN(Yet Another Resource Negotiator)은 메타(Facebook)에서 2016년에 만든 자바스크립트 프로젝트의 종속성을 관리하는 데 사용되는 오픈 소스 패키지 매니저입니다. npm보다 향상된 기능을 원했기 때문에 나온 패키지 매니저입니다. npm의 단점(속도,안정성,보안성)을 커버도 하고 캐시 이용하여 패키지 데이터 관리뿐 아니라 복수개의 패키지를 설치할 때 병렬로 처리하기에 효율이 좋습니다.


설치는 macOS에서 HomeBrew를 사용할 수 있고 Windows에서는 Chocolatey, Scoop, NPM으로 설치 가능합니다.

기본 명령어

yarn init -y : 초기 설정, -y 옵션은 설정 단계 skip
yarn add pkg-name: 패키지 설치
yarn add pkg-name@1.2.3 : 특정 버전의 패키지 설치
yarn add pkg-name --dev,  yarn add pkg-name -D : devDependency에 패키지 설치
yarn global add pkg-name : 패키지 전역 설치
yarn install : yarn.lock 파일에 명시된 패키지들을 설치(파일이 없다면 생성)
yarn remove pkg-name : 패키지 삭제,   yarn upgrade pkg-name : 패키지 최신 버전으로 업데이트

자바스크립트 패키지 실행자 NPX

npm 버전 5.2부터 npx는 기본 패키지로 제공이 되고 있습니다. 패키지를 설치하지 않고 패키지를 다운로드 받아서 실행하는 것이 모티브입니다. 결국 npx는 일회용 패키지로 사용이 된다고 볼 수 있습니다.

전역 패키지, 로컬 패키지처럼 프로젝트에서 버전과 의존성 라이브러리를 둘 다 관리하는 것은 쉽지 않습니다. 이러한 문제를 자연스럽게 해결해 줄 수 있는 것이 자바스크립트 패키지 실행자 NPX입니다.

NPM vs YARN 비교

안정성과 보안성면에서 둘이 비교가 된다. yarn.lock 파일의 패키지 설치에 있어 npm보다 안정적으로 버그를 줄이면서 모든 디바이스에 동일한 환경을 구성할 수 있는 게 가장 큰 차이라 생각한다.

기본 명령어 비교

npm install <-> yarn
npm install pkg-name <-> npm add pkg-name
npm i pkg-name <-> yarn add pkg-name
npm install -D pkg-name <-> yarn add -D pkg-name
npm install --save-dev pkg-name <-> yarn add --dev pkg-name
npm uninstall pkg-name <-> yarn remove pkg-name
npm update <-> yarn upgrade
npm install -g pkg-name <-> yarn global add pkg-name
npm uninstall -g pkg-name <-> yarn global remove pkg-name

NPM vs NPX 비교

Node Package Manager vs Node Package eXecute

npx는 npm과 비교 대상이 아닌 npm을 좀 더 편리하게 사용하기 위해 npm에서 제공하는 CLI(Command line interface)입니다. npm 패키지를 실행 할 수 있게 해줍니다. 일례로 react 애플리케이션을 생성할 시 npm으로 전역 설치를 하지 않고 ‘npx create-react-app 앱이름’ 이 명령어를 사용하여 필요한 패키지를 다운로드하여 실행을 합니다. 장점으로 전역 설치를 하지 않기 때문에 항상 최신 버전의 react 앱을 사용할 수 있는 것입니다.

애플리케이션 생성을 할 때 npm을 쓰게 되면 버전 관리가 어렵고 전역 설치, 로컬 설치 둘 다 가능한데 실제 프로젝트 개발할 때 두 가지의 환경을 관리하기에는 어려움이 있습니다. 그래서 등장한 것이 npx 입니다. 전역 설치도 아니고 로컬 설치도 아닌 패키지를 실행하여 최신 버전으로 애플리케이션을 사용하는 것입니다. NPX는 일회성 명령으로 특정 노드 버전의 스크립트나 로컬에 설치된 패키지를 사용하는 경우에 적합합니다.

NVM 주요 기능

마지막으로 NVM은 “Node Version Manager”의 약자로, 여러 버전의 Node.js를 쉽게 설치하고 관리할 수 있는 툴입니다. Node.js 개발자들에게 필수적인 도구 중 하나로, 다양한 프로젝트에서 다른 버전의 Node.js를 필요로 할 때 매우 유용합니다. NVM을 사용하면 명령어 한 줄로 Node.js의 특정 버전을 설치하거나, 설치된 버전 사이를 빠르게 전환할 수 있습니다. 이는 프로젝트의 호환성을 보장하고, 버전 관리를 용이하게 해줍니다.

사용 방법)
Node.js의 특정 버전 설치 – nvm install 20.12.0
설치된 버전 목록 보기 – nvm list
Node.js 버전 전환 – nvm use 20.12.0
기본 Node.js 버전 설정 – nvm alias default 20.12.0

프로그램 정의, 프로그래밍 언어 종류

웹 개발 CLI 및 빌드 패키지 도구 정리

Leave a Comment