사실 개발을 하면서 npx, npm 등의 키워드는 정말 많이 사용했지만 정확히 무슨 뜻인지 알고 사용하지는 않았었는데 이참에 정리해보고자 한다.
npm은 node package manager의 약자로 레지스트리와 같은 저장소 역할을 한다. 즉, 라이브러리들을 담고있는 역할이다. 배포나 실행 등을 할 때에도 사용하는데 npm에 관한 내용들은 모두 package.json 에 정의가 되어 있다.
npm으로 설치하는 옵션은 크게 두가지로 나뉜다.
npx가 새로운 패키지 관리 모듈은 아니고 npm 5.2.0 버전부터 새로 추가된 도구이다.
원래 react app을 받을 때에는 npm -g 를 이용해 global 디렉토리에 다운을 받았는데 이제는 npx를 이용하여 CRA를 이용할 수 있다. npx는 다운받지 않고 노드 레지스트리에 있는 것을 가져와 사용하도록 한다. 예로 npx create-react-app . 을 실행하게 된다면 npx가 npm 레지스트리에서 CRA를 찾아 다운로드 없이 실행시켜준다. 이는 disk space를 낭비하지 않는 것과 항상 최신 버전을 사용할 수 있는 장점이 있다.
번외로 yarn도 한번 살펴볼까한다. yarn도 npm과 마찬가지로 패키지 관리 모듈이다.
속도
npm은 패키지를 한 번에 하나씩 순차적으로 설치하는 반면 yarn은 여러 패키지를 동시에 가져오고 설치하도록 최적화되어 있어 패키지 설치 속도 측면에서 yarn이 npm보다 빠르다.
보안
npm은 자동으로 패키지에 포함된 다른 패키지 코드를 실행하기 때문에 보안 시스템에 몇 가지 취약성이 발생한다. 반면 yarn은 yarn.lock 또는 package.json파일에 있는 파일만을 설치하기 때문에 보안 측면에서 npm보다 훨씬 안전하다.
따라하며 배우는 노드, 리액트 시리즈 - 기본 강의 를 공부하며 작성한 글입니다.
npm과 yarn의 차이는 해당 글을 참고하였습니다.