Contents

npm? npx?

npm Vs npx

예전부터 궁금했지만 굳이 알아볼 필요까지는 없었다가, 여드름이 터지듯 갑자기 궁금해서져 알아봤습니다.

가장 큰 차이는 설치를 할 것인가 아닌가

  • 컴퓨터에 패키지 전역으로 설치하여 실행: npm
  • 컴퓨터에 패키지 설치 없이 이번만 실행: npx
  • npm는 컴퓨터 전역(global)에 패키지(npm 모듈 시스템)를 설치한다는 의미입니다.

    만약 npm -g와 같이 뒤에 -g가 있다면, 전역으로 설치한다는 옵션입니다. -g 옵션이 없으면 NPM 패키지는 node_modules라는 이름의 폴더 안에 저장됩니다. node_modules 폴더는 npm install을 실행한 위치와 같은 계층에 있는 폴더입니다.

  • npm 패키지를 설치하지 않고 실행만 하려면 터미널에 npx를 입력하면 됩니다.

    npx는 노드 패키지 실행(Node Package Execute, NPX)의 약자로 NPM 패키지 실행자(NPM Package Runner)라고도 불립니다. npx가 설치되어 있는지를 확인하시려면 다음 명령어를 터미널에 입력하시면 됩니다.

    1
    
    npx -v
    

컴퓨터에 노드 패키지를 저장하고 싶은 분들은 아래 1번 방법을, 패키지를 저장하지 않고 실행하고 싶은 분들은 2번 방법을 사용하시면 됩니다.

  1. 컴퓨터에 패키지 전역으로 설치: npm

    1
    2
    
    npm create-react-app my-project
    ...
    

  1. 컴퓨터에 패키지 설치 없이 실행: npx

    1
    2
    
    npx create-react-app my-project
    ...
    

👀

저는 react를 배우다가 npm과 npx의 차이가 문득 궁금해져서 알아본 것인데, react를 시작하는 여러 방법 중 하나인 CRA(create-react-app)는 버전 변경이 자주 발생하는 React의 Boiler Plate입니다. 보일러 틀에 여러 개의 보일러를 찍어내듯, 초기 환경을 자동으로 셋업해주는 도구라고 보면 된다. (Vue CLI 같은 개념이다.)

버전 변경이 잦다는 것은 한 버전을 글로벌하게 설치해서 사용할 경우 내가 사용하는 버전이 점점 뒤로 밀리는 후속버전이 된다는 의미.

즉 항상 최신 버전으로 프로젝트를 생성하고 싶다면, npx가 더 맞는 방법이 되는 것이다.

이렇게 사용하려는 기술의 변화와 개인의 취향을 고려하여 사용하면 더 좋을 것 같습니다.