Skip to content

Latest commit

 

History

History
43 lines (25 loc) · 3.08 KB

210423_npm-npx.md

File metadata and controls

43 lines (25 loc) · 3.08 KB

npm과 npx의 차이

글로벌 모듈은 혼란스럽다.

npm을 통해서 모듈을 설치할 때, 한 가지 옵션을 주게 되면 매 프로젝트마다 모듈을 설치해 줄 필요가 없다. 그저 내 컴퓨터 안의 글로벌한 공간에 모듈을 설치해서 프로젝트마다 같은 모듈을 공유해서 사용할 수 있다.

npm install 모듈 이름 -g

위와 같이 -g를 붙여주기만 하면 글로벌 모듈을 설치할 수 있다.

하지만, 이는 좋은 방법일까?

여러 번 설치할 필요 없이 한 번 설치하면 끝나는데 이는 왜 좋은 방법이 아닐까. 아래와 같은 대표적인 3가지의 이유가 있다.

모듈 업데이트 여부

모든 프로젝트 때마다 모듈을 재설치하는 것이 아니라, 한 번 설치한 모듈은 그대로 사용하기 때문에 개발자가 의식해서 글로벌 모듈을 최신 버전으로 재설치하지 않고서는 업데이트가 되었는지 확인할 수 없다.

업데이트 시 변동사항이 생길 수 있다.

프로젝트를 3개 진행하고 있는데, 같은 모듈의 가각 다른 버전이 필요한 상황이 생길 수도 있을 것이다. 글로벌 옵션으로 모듈을 설치했을 경우 모듈의 버전은 당연히 한 개이기 때문에 문제가 발생할 수 있다.

create-react-app 같은 보일러 플레이트에는 치명적이다.

리액트 프로젝트 생성 도구인 create-react-app 같은 모듈의 경우, 변경사항이 꽤나 잦은 모듈이다. 매 업데이트마다 새로운 기능과 다양한 버그가 수정되므로 이런 보일러 플레이트 같은 경우에는 항상 최신 버전을 유지해주는 것이 좋은데, 매번 설치하는 것이 상당히 번거로울 수 있다.

해결책, npx

npm 5.2 버전부터 npx가 기본 패키지로 제공되기 시작했다. npx도 모듈의 일종이다. 해당 모듈은 npm을 통해 모듈을 로컬에 설치했어야만 실행시킬 수 있었던 기존의 문제점의 해결책이 되었다. 모듈을 로컬에 저장하지 않고, 매번 최신 버전의 파일만을 임시로 불러와 실행시킨 후에 다시 그 파일은 없어지는 방식으로 모듈이 동작하고 있다.

npx는 어디에 효과적일까?

create-react-app 같은 보일러 플레이트 모듈에 효과적이다. npx를 통해 create-react-app을 설치할 경우에는 매번 최신 버전만을 가져와서 설치해 주기 때문에 현재 어떤 버전을 사용하고 있는지 확인할 필요가 없다.

정리하며

  • npm install-g 옵션을 설정하면 리눅스 기준 내 컴퓨터의 /usr/local/bin 디렉토리 안에 다운로드된다.
  • npxnpm registry에서 create-react-app을 찾아서 다운로드 없이 실행시켜준다.
  • so, Disk Space를 낭비하지 않을 수 있다.
  • 항상 최신 버전을 사용할 수 있다.
  • npm 5.2 업데이트 전에는 -g 옵션을 이용해서 모듈을 다운로드받아서 사용했지만, 현재는 npx를 통해 다운로드 없이 create-react-app 모듈을 사용할 수 있다.