본문 바로가기
기타

npm과 npx를 사용하는 이유와 차이점

by 니나노뭉 2024. 8. 16.

npm(Node Package Manager)은 기본적으로 Node.js를 설치하면 함께 제공되므로, npm을 사용하려면 먼저 Node.js를 설치해야 합니다. 또한 npx는 Node.js 8.2.0 버전부터 npm과 함께 기본적으로 설치됩니다.

Node.js 설치

 

Node.js란 무엇인가? 입문자를 위한 필수 개념 정리(node 설치)

Node.js는 JavaScript 런타임(runtime) 환경으로, 서버 측 애플리케이션을 개발하기 위해 주로 사용됩니다. Node.js는 Chrome V8 JavaScript 엔진을 기반으로 만들어졌으며, 브라우저 외부에서 JavaScript를 실행할

ninano-m.tistory.com

 


npm과 npx는 모두 Node.js 환경에서 사용하는 명령어 도구지만, 목적과 기능에 있어서 차이가 있습니다. 아래에서 각각의 역할과 차이점을 자세히 설명하겠습니다.

1. npm (Node Package Manager)

npm은 Node.js의 기본 패키지 관리자입니다. Node.js 패키지를 설치, 관리, 업데이트하는 데 사용되며, 다음과 같은 주요 기능을 제공합니다.

  • 패키지 설치: npm install 명령어를 통해 로컬 프로젝트나 전역(global) 환경에 패키지를 설치할 수 있습니다.
    • 로컬 설치: npm install <package-name> 명령어를 사용하여 특정 프로젝트의 node_modules 폴더에 패키지를 설치합니다.
    • 전역 설치: npm install -g <package-name> 명령어를 사용하여 전역적으로 사용할 수 있도록 패키지를 설치합니다.
  • 스크립트 실행: package.json 파일에 정의된 스크립트를 실행할 수 있습니다. 예를 들어 npm run build는 package.json의 scripts 섹션에 정의된 build 스크립트를 실행합니다.
  • 패키지 관리: npm은 패키지의 버전, 의존성, 보안 업데이트 등을 관리하는 데 유용합니다. npm update, npm audit 등의 명령어를 통해 패키지를 최신 상태로 유지할 수 있습니다.

2. npx (Node Package Execute)

npx는 npm 5.2.0 버전부터 포함된 도구로, 패키지를 설치하지 않고도 패키지를 실행할 수 있는 기능을 제공합니다. 주로 다음과 같은 상황에서 유용하게 사용할 수 있습니다.

  • 임시 실행: 특정 패키지를 전역적으로 설치하지 않고도, 단 한 번만 실행할 수 있습니다. 예를 들어 npx create-react-app my-app 명령어를 사용하면 create-react-app 패키지를 전역 설치 없이 실행하여 새로운 React 프로젝트를 생성할 수 있습니다.
  • 버전 관리: 여러 버전의 CLI 도구를 실행해야 할 때, npx를 사용하면 특정 버전의 패키지를 실행할 수 있습니다. 예를 들어 npx <package-name>@<version> 명령어로 특정 버전의 패키지를 실행할 수 있습니다.
  • 패키지 관리 없이 실행: 로컬에 설치된 패키지가 없을 경우 npx는 자동으로 패키지를 다운로드하고 실행한 후, 사용이 끝나면 삭제합니다. 따라서 프로젝트 내에 패키지를 설치하지 않고도 일회성 작업을 수행할 수 있습니다.

차이점 요약

  • 설치 vs. 실행: npm은 패키지를 설치하고 관리하는 데 중점을 두는 반면, npx는 패키지를 설치하지 않고도 실행할 수 있는 방법을 제공합니다.
  • 패키지 실행 방식: npm을 사용하면 먼저 패키지를 설치한 후 package.json 파일에 스크립트를 추가하거나 CLI에서 직접 실행해야 하지만, npx는 패키지를 일시적으로 설치하여 바로 실행할 수 있습니다.
  • 유연성: npx는 특정 버전의 패키지를 실행하거나 패키지 설치를 피하고자 할 때 매우 유용하며, 특히 CLI 도구나 일회성 명령어 실행에 적합합니다.

이 두 도구는 각기 다른 목적을 가지고 있으며, 상황에 맞게 적절히 사용하면 Node.js 프로젝트에서 효율적으로 작업할 수 있습니다.