며칠전 front-end 면접을 봤는데 npm이 무엇인지에 대해 질문을 받았다. 지금까지 npm, npx, yarn을 사용하면서 이게 뭔지 왜 사용하는지 생각없이 사용하고 있었다..🤦♂️ 참 멍청했고 그래서 그냥.. package관리? 라고 대답했다..
그래서 지금이라도 알아보려고 한다!!
- npm : Node Package Manager의 약자.
- Package(Moudule) : 프로그램의 구성요소 중 특정 기능을 수행할 수 있는 코드의 집합(라이브러리).
개발자들이 패키지(모듈)의 설치 및 관리를 쉽게 하기 위해 도와주는 매니저(관리 도구)이다.
npm은 3가지 요소로 구성되어 있다.
- WebSite
- 웹사이트를 통해 패키지들을 찾고, 관련 문서를 볼 수 있으며, 패키지를 공유, 배포할 수 있다.
- CLI
- Command Line Interface의 줄임말로, 터미널을 뜻한다.
- 대부분의 개발자들이 CLI를 통해 npm 패키지 업데이트/설치/제거/관리를 할 수 있다.
- Registry
- 레지스트리는 대규모의 public DB를 뜻하며, npm 레지스트리에는 자바스크립트 소프트웨어와 메타 정보들이 들어 있다.
- 현재 npm 레지스트리에는 100만개 이상의 모듈이 들어있다.😲
- package.json에 private: true를 설정하면 공개적 배포를 막을 수 있다.
- 프로그램을 제작 시 어떤 기능을 구현할 때 자신이 직접 코드를 작성하지 않아도 동일한 기능의 남이 만든 코드를 쉽게 사용 할 수 있다.
- 코드의 재사용성이 높아지고 유지 보수가 쉬워질뿐 아니라 형상관리가 용이해진다
npx는 Node 패키지를 실행시키는 하나의 도구이고 npm5.2.0버전부터 npm에 딸려있는 기능 중 하나다.
npx의 역할!
- 기본적으로 실행되어야할 패키지가 경로에 있는지 먼저 확인.
- 경로에 그대로 있다면, 그대로 실행.
- 그렇지 않다면 패키지는 설치되어 있지 않음을 의미하고, npx가 최신 버전의 패키지를 설치한 후에 실행한다.
일단 이정도만 알아보고 나중에 더 자세하게 하나씩 알아보도록 하자!.👍