npm, npx, yarn은 모두 Node.js 생태계에서 패키지를 관리하고 실행하기 위한 도구들입니다. 이 명령어들은 서로 다른 목적과 기능을 가지고 있으며, 각 도구의 사용 방식과 역할을 이해하는 것이 중요합니다.
1. npm (Node Package Manager)
npm은 Node.js의 기본 패키지 관리자입니다. 주된 역할은 Node.js 패키지 설치, 버전 관리, 의존성 관리를 처리하는 것입니다.
주요 기능 및 명령어:
-
패키지 설치:
-
글로벌 패키지 설치:
-
패키지 업데이트:
npm update
명령어로 패키지를 최신 버전으로 업데이트할 수 있습니다.
npm update
-
패키지 제거:
- 더 이상 필요 없는 패키지를 제거할 수 있습니다.
npm uninstall lodash
-
스크립트 실행:
package.json
파일:
npm
은 프로젝트의 의존성을 관리하는 package.json
파일을 사용합니다. 여기에는 프로젝트의 이름, 버전, 의존성 목록 등이 정의됩니다.
{
"name": "my-project",
"version": "1.0.0",
"scripts": {
"start": "node app.js"
},
"dependencies": {
"express": "^4.17.1"
}
}
2. npx (Node Package Execute)
npx는 npm 5.2.0 버전 이후부터 기본으로 제공되는 도구로, 명령어를 일회성으로 실행할 때 주로 사용됩니다. 이를 통해 패키지를 전역 설치하지 않고도 명령어를 실행할 수 있습니다.
주요 기능 및 명령어:
-
패키지 실행:
-
글로벌 설치 없이 실행:
-
특정 버전의 패키지 실행:
3. yarn
yarn은 Facebook이 만든 npm의 대안 패키지 관리자입니다. 주로 더 빠른 속도, 결정적 의존성 해상, 오프라인 모드 지원 등의 이유로 사용됩니다. yarn
은 기본적으로 npm과 유사한 기능을 제공하지만, 몇 가지 차별화된 기능이 있습니다.
주요 기능 및 명령어:
-
패키지 설치:
-
패키지 제거:
yarn remove
명령어로 패키지를 제거합니다.
yarn remove lodash
-
패키지 업데이트:
yarn upgrade
명령어로 패키지를 최신 버전으로 업데이트할 수 있습니다.
yarn upgrade
-
글로벌 패키지 설치:
-
스크립트 실행:
차이점:
- 속도:
yarn
은 병렬로 패키지를 다운로드하며, 캐시 시스템을 통해 오프라인에서도 패키지를 설치할 수 있습니다.
- 결정적 설치:
yarn.lock
파일을 통해 설치되는 패키지의 버전을 결정적으로 고정할 수 있습니다. npm도 package-lock.json
을 사용해 동일한 기능을 제공하지만, yarn
이 처음으로 이 기능을 도입했습니다.
4. npm, npx, yarn의 차이점 요약
특징 |
npm |
npx |
yarn |
주요 역할 |
패키지 설치 및 관리 |
일회성 패키지 실행 |
패키지 설치 및 관리 |
사용 사례 |
프로젝트 의존성 관리 및 스크립트 실행 |
패키지를 글로벌 설치 없이 바로 실행 |
npm보다 더 빠른 패키지 관리 |
패키지 설치 명령어 |
npm install |
해당 없음 |
yarn add |
패키지 실행 |
npm run <script> |
npx <package> |
yarn run <script> |
글로벌 패키지 실행 |
npm install -g <package> |
npx <package> |
yarn global add <package> |
패키지 업데이트 |
npm update |
해당 없음 |
yarn upgrade |
장점 |
Node.js의 기본 패키지 관리자 |
글로벌 설치 없이 패키지 실행 가능 |
속도 빠름, 결정적 의존성 해상, 오프라인 설치 가능 |
- npm: Node.js의 기본 패키지 관리 도구로, 프로젝트 의존성 설치, 관리, 업데이트를 위한 도구입니다. 전 세계적으로 가장 많이 사용됩니다.
- npx: npm과 함께 제공되는 도구로, 패키지를 글로벌 설치 없이 일회성으로 실행할 수 있게 해줍니다.
- yarn: npm의 대체 패키지 관리자이며, 속도와 효율성을 중시하는 프로젝트에서 많이 사용됩니다. 결정적 의존성 해상, 빠른 설치 속도, 오프라인 설치 등의 장점이 있습니다.
각 도구는 서로 다른 용도로 사용되지만, 상황에 맞게 적절한 도구를 선택하여 프로젝트에 적용할 수 있습니다.