npm, npx, yarn 개발 공부를 하시거나 개발자이신분들은 아주 자주 접하는 명령어 일거에요.
저역시 리액트네이티브로 개발을 하려고 공부하고 있습니다. 그러다보니 npm, npx, yarn 명령어를 써야할때가 있습니다.
혼자 하다가 막힐때 블로그를 찾아보곤 하는데 어디는 npm, 어디는 npx 그래서 정확한 구분을 짓기위해 블로그에 기록하려고 합니다.
npm이란
npm은 Node Packaged Manager의 약자입니다. 여기서 Node는 node.js를 의미하고 Packaged는 package로 만들어진것을 의미합니다. package는 모듈이라고도 불리는데 패키지나 모듈은 프로그램보다는 조금작은 기능을 하는 단위라고 보시면 됩니다.
그리고 Manager는 관리자를 의미하죠. 그래서 node.js로 만들어진 패키지를 관리해주는 툴이라고 생각하시면 됩니다.
npx란
npx는 새로운 패키지관리모듈이 아닙니다. 자바스크립트 패키지관리 모듈인 npm의 5.2.0 버전부터 새로 추가된 도구입니다. 그래서 npm과 비교대상이 아닌 npm을 조금더 편하게 사용하기 위해 제공해주는 하나의 도구라고 생각하시면됩니다.
그래서 npm 5.2.0 이상버전만 설치가 되어있다면 npx 명령어를 사용할 수 있습니다.
npm = package manager -> 관리
npx= package excute -> 실행
과거 npm을 사용한이유는 주로 2가지가 있습니다.
- 전역으로 패키지를 설치하여 의존성 라이브러리를 전체적으로 관리하기 위해
- 특정 프로젝트에만 의존성 라이브러리를 설치하기 위해
의존성 라이브러리들이 전역이나 로컬에 설치가 되어있는 상태에서 관리가 되면 어떤 문제가 발생할까요?
만약 패키지가 업데이트가 된다면 전역으로 관리되고 있는 패키지들도 별도로 업데이트 해줘야 하고 로컬로 관리되고 있는 패키지도 업데이트 해줘야하는 번거로운 상황이 발생합니다.
이러한 문제들을 해결하기 위한 도구가 바로 npx인거죠. npx는 일일이 설치, 실행, 제거 할필요없이 일회성으로 원하는 패키지를 npm레지스트리에 접근해서 실행시키고 설치하는 도구입니다. 본인이 패키지를 설치하고 업데이트를 하지 않더라도 npm레지스트리에 올라가 있는 최신버전을 실행시키고 설치만 하면 끝인것입니다.
그래 npm과 npx는 이제 뭐하는 놈인지 알았어 그럼 yarn 얘는 뭐야 도대체
yarn이란
역시 자바스크립트 패키지 매니저입니다. npm과 마찬가지로 패키지의 저장소를 제공하고, 시스템에서 의존패키지를 설치 업데이트 할수 있도록 도와줍니다.
뭐야 npm이란 똑같네 그런데 왜나온거야?
페이스북은 프로젝트가 거대해지며 npm 보안 및 성능 문제를 겪었고 npm을 대체할 새로운 패키지 매니저를 개발했는데 그게 바로 yarn인겁니다. yarn은 npm에 비해 성능(속도)와 보안이 크게 향상되었습니다.
패키지를 순서대로 설치하는 npm 과 달리 병령로 설치하므로 설치속도가 빠릅니다. 특히, yarn은 캐싱을 이용하기 때문에 패키지 설치가 빠릅니다.
이것이 더깊게 들어가면 더 복잡해지는지라 오늘 은 여기까지 하도록 하겠습니다.