React

npm, npx 차이

글발 2023. 12. 13. 16:55
728x90
반응형

react 공부를 시작하면서

react 프로젝트를 생성할 때 npx create-react-app 명령을 사용했다.

그래서 npm과 npx의 차이점에 대해서 간단하게 정리를 해보자.

 

npm

npm은 node package manager의 약자로 노드 패키지 관리자이다.

npm은 주로 Node.js 애플리케이션의 필요한 패키지를 설치하고 의존성을 관리하는데 사용된다.

npn install <package> 명령어를 통해 패키지를 설치할 수 있다.

npm을 사용하여 package.json 파일에 정의된 스크립트를 실행할 수 있다. ex) npm start

npm을 사용하여 패키지를 글로벌하게 설치할 수 있다. ex) npm install -g <package>

글로벌 설치된 패키지는 시스템 전역에서 사용할 수 있다.

npx

npm 5.2버전부터 npx가 기본 패키지로 제공 되고 있다.

npx는 execute npm package binaries의 약자로 npm 패키지 실행도구이다.

npx가 실행도구라는 점이 npm과의 큰 차이라고 할 수 있다.

npx는 패키지를 실행만 도와주기 때문에 설치 없이 가볍게 사용할 수있다.

기존에 npm을 통해 로컬에 설치했어야만 실행할 수 있었던 문제점을 해결할 수 있게 된 것이다.

모듈을 로컬에 저장하지 않고 매번 최신의 파일만 임시로 불러온 후 실행시키고 파일은 없어지는 방식이다.

 

npx의 장점

단순히 생각하면 npm -g 옵션을 통해서 모듈을 설치를 하면

내 컴퓨터의 글로벌한 공간에 모듈을 설치해 매 프로젝트마다 모듈을 설치해줄 필요가 없고

같은 모듈을 공유해서 재사용할 수 있다. 편리해보인다.

하지면 여기엔 큰 단점이 있다. (좋은 방법이 아니다)

세가지 이유 정도가 있는데 버전과 관련된 이유이다.

1. 모듈의 업데이트 확인

개발자가 매번 최신 버전으로 설치하지 않으면 전 버전의 모듈을 사용하게 된다. (업데이트 확인 불가)

2. 버전 충돌

프로젝트를 몇개 운영한다고 가정했을 때 같은 모듈의 각각 다른 버전이 필요할 수 있다. 이 때 글로벌 모듈은 버전이

한 개이기 때문에 충돌이 날 수 있다.

3. 보일러 플레이트에 치명적(ex) create-react-app)

대표적인 보일러 플레이트인 create-react-app 같은 모듈의 경우 업데이트(변경사항)이 잦은 모듈이다.

따라서 설치할 때마다 npm으로 재설치를 하지 않는다면 전버전을 사용하게 된다.

이런 프로젝트 생성 모듈은 매 업데이트 시에 새로운 기능과 버그가 개선되기 때문에

항상 최신 버전을 유지해주는 것이 좋다. 매번 설치하는 것은 번거롭다.

이를 개선하기 위해 또는 그런 상황을 방지하고 싶을 때 npx를 사용한다.
npx를 통해 create-react-app을 설치할 경우
매번 최신 버전 만을 가져와서 설치를 하기 때문에 버전관리에 신경을 쓰지 않아도 된다.