---
title: "npx와 npm 차이점과 활용법 완벽 분석"
author: "VibeTimes"
published: "2026-08-21T02:25:31.102Z"
section: "technology"
tags: ["npx", "npm"]
language: "ko"
url: "https://vibetimes.co.kr/news/cmt2btpm43wq03mq5bxfdq9xm"
---

# npx와 npm 차이점과 활용법 완벽 분석

2017년 npm 5.2.0 버전에 기본 내장된 npx는 패키지를 설치하지 않고도 즉시 실행할 수 있는 도구로, Node.js 개발 환경의 명령어 사용 패턴을 바꿔놓았다. npm이 패키지를 다운로드해 node\_modules 폴더에 저장하고 package.json에 버전을 기록하는 '설치·관리' 도구라면, npx는 설치 과정 없이 필요한 순간에만 패키지를 가져다 쓰는 '실행' 도구다. 두 도구의 차이를 정확히 이해하면 프로젝트 설정 시간과 디스크 낭비를 크게 줄일 수 있다.

## 작동 방식의 핵심 차이: 설치와 실행

## npm은 의존성을 기록해 저장한다

npm install 명령을 실행하면 패키지가 프로젝트 루트의 node\_modules 디렉토리에 저장되고, 버전 정보는 package.json과 package-lock.json에 기록된다. 이 기록은 협업자나 배포 서버에서 동일한 개발 환경을 그대로 재현하기 위한 핵심 장치다. 글로벌 설치(npm install -g)를 하면 시스템 전체 경로에 바이너리가 저장되어 어디서든 명령어를 호출할 수 있지만, 프로젝트마다 요구하는 버전이 다를 경우 충돌 문제가 생기기 쉽다.

## npx는 캐시를 활용해 일회성으로 실행한다

npx 패키지명을 입력하면 세 단계를 순서대로 확인한다. 먼저 현재 프로젝트의 node\_modules/.bin에 해당 패키지가 있는지 검색하고, 있으면 바로 실행한다. 없다면 시스템 전역 설치 여부를 확인한다. 둘 다 없을 경우 npm 레지스트리에서 패키지를 임시로 다운로드해 캐시(~/.npm)에 저장한 뒤 실행하고, 실행이 끝나면 설치 본체는 남기지 않는다. 덕분에 node\_modules 폴더가 불필요하게 커지는 것을 막을 수 있다. 한 번 실행한 패키지는 캐시에 남아 있어 다음 실행이 빨라진다.

## 실전 시나리오로 보는 차이

## 프로젝트 생성: create-react-app 사례

과거에는 리액트 프로젝트를 만들기 위해 npm install -g create-react-app을 먼저 실행해야 했다. 전역 설치는 디스크 용량을 차지하고, 도구가 업데이트될 때마다 직접 최신 버전으로 갱신해야 하는 부담도 있었다. 반면 npx create-react-app my-app 한 줄이면 설치 과정 없이 항상 최신 버전으로 프로젝트를 생성할 수 있다. 전역 설치로 인한 시스템 오염을 원천적으로 차단하는 방식이다.

## 로컬 패키지 호출: ESLint 사례

npm 방식으로 로컬에 설치된 도구를 실행하려면 ./node\_modules/.bin/eslint처럼 전체 경로를 입력하거나, package.json의 scripts에 미리 정의해 npm run lint로 실행해야 했다. npx eslint --init처럼 입력하면 로컬 설치 여부를 자동으로 판단해 실행하므로 scripts 정의 없이도 직관적으로 명령어를 쓸 수 있다. 버전을 지정한 npx package@version 형식으로 특정 버전만 테스트해보는 것도 가능하다.

## GitHub 저장소 직접 실행

npx는 npm 레지스트리에 배포되지 않은 코드도 실행할 수 있다. npx github:user/repo#branch-name 형식을 사용하면 특정 브랜치나 커밋의 코드를 직접 실행한다. 공식 릴리스 전 베타 버전을 시험하거나 개인 유틸리티 스크립트를 돌려볼 때 유용하다. npm에는 없는 npx 고유 기능이다.

## 최신 트렌드: standalone 실행과 워크스페이스 시대

## 필요할 때만 쓰는 Disposable 환경

최근 Node.js 생태계는 패키지를 무겁게 설치하기보다 필요할 때 가볍게 가져와 쓰는 독립형(standalone) 실행 방식으로 흐르고 있다. npx는 이 흐름의 중심에 있다. CI/CD 파이프라인이나 서버리스 환경처럼 매번 깨끗한 환경이 필요하거나 설치 공간이 제한적인 상황에서 특히 효과적이다.

## npm workspaces와의 상호 보완

npm의 workspaces 기능은 하나의 루트에서 여러 프로젝트의 의존성을 통합 관리하는 모노레포 방식을 지원한다. npx는 이 환경에서 특정 패키지에 포함된 실행 도구만 격리해 호출하거나 개발 의존성(devDependencies)에 있는 도구를 시험해볼 때 활용된다. 거대한 의존성 트리 전체를 탐색할 필요 없이 필요한 도구만 실행하는 셈이다.

## 선택 기준과 주의사항

## npm을 써야 할 때

React, Lodash, Express처럼 런타임에 반드시 필요한 라이브러리는 npm install로 dependencies에 등록해야 한다. 배포 시점의 환경 일치, 보안 취약점 점검, 라이선스 관리가 모두 설치 기반 관리 위에서 이루어지기 때문이다. CI/CD 환경에서 npm ci로 의존성을 빠르게 복원하려면 package-lock.json 기반의 설치가 선행되어야 한다.

## npx를 써야 할 때와 보안 유의점

코드 포맷팅(Prettier), 프로젝트 생성 도구, 배포 도구처럼 일회성이거나 버전이 자주 바뀌는 CLI 도구는 npx 실행이 권장된다. package.json을 수정하지 않으면서 여러 버전을 시도할 수 있다는 점이 강점이다. 다만 npx는 인터넷에서 패키지를 즉시 가져와 실행하는 구조이므로, 신뢰할 수 없는 패키지를 실행하면 악성 코드가 동작하는 순간 시스템이 위험해진다. npm 레지스트리의 공식 패키지인지, 다운로드 수와 유지보수 상태는 어떤지 확인한 뒤 실행하는 습관이 필요하다.

정리하면 npm은 프로젝트의 의존성을 기록하고 재현하는 관리 도구이고, npx는 설치 부담 없이 도구를 즉시 실행하는 소비 도구다. 런타임 의존성은 npm으로 고정하고, 개발 편의를 위한 CLI 도구는 npx로 가볍게 쓰는 구분된 전략이 현재 Node.js 개발의 표준적인 실천법으로 자리 잡았다.
