NPM vs NPX

jewoo·2021년 11월 15일
0
post-thumbnail

서론

학습 목표 📖

  • NPX가 무엇인지 알게 된다
  • NPM과의 차이점을 알게 된다

본론

NPX에 대해 알아보게 된 계기

요즘 npm에 올라온 설명서를 보면 npx로 설치하라는 경우를 많이 볼 수 있다.
npm과는 어떤 차이점이 있는것인지 궁금해졌다.

NPX란 무엇인가?

구글에 검색을 해보니 다음과 같이 나온다.
"NPX는 Node Package Execute의 줄임말로서 NPM 5.2.0 버전 이상을 설치하면 NPX가 자동으로 설치되어 따라옵니다.
NPM 패키지 러너로서 패키지 설치 조차 없이 당신이 원하는 npm registry를 실행할 수 있습니다."

흠...?

어느정도 이해는 가는데 정확한 이해를 위해 간단하게 사용해보도록 하자.

사용방법

실습은 corona-cli 모듈을 통해 진행한다.

  1. npm 으로 모듈을 설치하고 사용한다
  2. npx로 모듈을 사용한다

모듈 설치 및 사용 (NPM)

모듈을 설치하도록 하자.

npm i -g corona-cli

글로벌로 설치하였으니 어디서든 사용이 가능하다.
IDE를 통해 사용하는 것이 아닌 OS 터미널을 열어서 사용해보자.
문서에 corona 명령어를 입력하면 모든 나라의 데이터를 보여준다고 하니 따라치자.

작동이 잘 되는것을 확인할 수 있다.
다만 문제는 글로벌로 설치하였기 때문에 배포자가 version 업데이트를 할 경우에 현 version은 outdated 또는 deprecated 될 경우가 생긴다.

이러한 문제를 해결하기 위해 NPX가 도입되었다.

모듈 설치 및 사용 (NPX)

NPX의 work flow는 다음과 같다.

  1. Global 또는 Local에 해당 모듈이 설치되어 있는지 확인한다.
  2. 해당 모듈의 디폴트 명령어를 실행한다.
  3. 실행 후 해당 모듈을 삭제한다.

특이한 점은 모듈을 실행한 후에 삭제를 한다는 점이다.
바로 실행해보자.

npm uninstall -g corona-cli
npx corona-cli

// 기존 글로벌로 설치한 corona-cli를 삭제한다

자동으로 설치하고 기본 명령어를 실행한다는 것을 알 수 있다.
그럼 정말 삭제 되었는지 corona 명령어를 실행해서 동작하는지를 확인해보자.

명령어를 찾지 못하는 것을 보니 삭제가 되었음을 알 수 있다.

특정 나라를 조회하고 싶을 경우에는 "corona countryName"을 작성하라고 나와있으니 npx를 사용해서 캐나다를 조회해보자.
기본 명령어가 corona 였으니 npx corona-cli canada 라고 작성하자.

잘 작동되는걸 확인할 수 있다.

NPX 단일 사용

NPX를 사용할 시에 글로벌 또는 로컬에 설치가 되어 있는지를 먼저 확인한다고 했다.
그럼 설치가 되어 있는 상황에서는 어떻게 될까?

로컬에 이미 모듈이 설치되어 있는 상태에서 china만 조회를 해보았다.
이전과 다르게 이미 설치가 되어있으므로 재설치를 하지 않고 바로 명령어를 실행하기 때문에 전과 비교하였을때 속도가 빨라졌음을 알 수 있다.

결론

NPX를 사용하면 설치를 하고(설치가 되지 않았을 경우) 바로 명령어를 실행하고 삭제한다는 것을 알 수 있다.

따라서 많이 언급되는 리액트 보일러플레이트 같은 경우에 굳이 파일을 설치해둘 필요가 없으므로 npx를 사용하여 1회성으로만 실행할때 유용하다고 볼 수 있다.

뿐만 아니라 husky를 사용하여 깃 훅을 등록할 경우에도 pre-commit 파일을 생성하기 위해 npm으로 패키지 설치후 npx로 명령어를 실행하는 메커니즘을 이해할 수 있게 되었다.

profile
Software Engineer

0개의 댓글