npx이란 무엇인가?

2020. 1. 25. 23:42Programming/JavaScript

npx란?

저번글에서 Node.js, npm, nvm에 대하여 다시한번 정리를 해보았다.

Node.js, npm, nvm이란 무엇인가

위 원문은 요약하면, Node.js는 자바스크립트 런타임 환경, npm은 자바스크립트 코드로 Node.js 패키지 매니저, nvm은 위 Node.js의 버전 관리 도구였다.

그렇다면 npx는 무엇일까?

우선, 이 npx를 처음만났을 때로 거슬러가보자. 리액트로 프로젝트를 처음 시작할 때 create-react-app패키지를 인스톨하기위해 npm이 아닌 npx를 사용해야했다.

npm crate-react-app my-app

npx

자바스크립트 패키지 관리 모듈인 npm@5.2.0 버전부터 새로 추가된 도구로, 쉽게말하면 npm으로 귀찮았던 과정들이 단순화되어 편해졌다고 볼 수 있다.

npx는 npm 레지스트리의 패키지 사용 경험을 파악하기 위한 도구이다.

  • npm : 레지스트리에서 호스팅되는 종속성(dependency)을 매우 쉽게 설치하고 관리할 수 있으며
  • npx : 레지스트리에서 호스팅되는 CLI도구 및 기타 실행 파일을 쉽게 사용할 수 있다고 한다.

 

만약 npm이었다면..

위 create-react-app을 설치하는 과정에서 npx가 아닌 npm으로 -g 설치를 하게되면 많은 문제가 생긴다. 그 중 로컬 스토리지에 있는 패키지가 새로운 버전이 나왔을 경우, 이미 존재하는 패키지를 제거하고 다시 설치해야한다는게 가장 큰 문제이다.

 

npx vs npm

이 부분에서 npx는 npm과 가장 다르다.

npx는 최신버전에 해당하는 패키지를 설치하여 실행하고, 실행된 이후에 해당 패키지를 제거한다.

이 부분이 너무나도 핵심이라 강조를 조금 해보았다.

npx를 호출하면 npm레지스트리에서 해당 이름의 패키지가 자동으로 설치되고 → 호출된다. 그러면 호출 후에, 설치된 패키지는 존재하지 않고 프로젝트의 용량이 커지며 더러워지는 것을 막을 수 있다.

좀 더 확장하여 예를들면, 내가 어떠한 TodoApp 레포에서 npx create-react-app을 설치하여 프로젝트를 진행하고, 이후에 다른 레포인 NoteApp레포에서 create-react-app을 하려면 사용할 때마다 다시 설치를 진행해야한다는 것이다. 왜냐하면, 작업이 끝났을 경우 그 패키지는 -g로 설치되어있는 것이 아니라서 호출된 이후에는 설치된 패키지는 존재하기 않기 때문이다.

npx설치

맨 처음 언급했듯, npm@5.2.0이상을 설치하면 된다. 또는 나는 npm이 아닌 npx만 원해!! 라고 하시는 분은, 아래의 링크에서 독립 실행형 버전의 npx를 설치할 수 있다고 한다.

npx