npm이란?
npm은 Node Package Manager의 약자로,
자바스크립트 언어를 위한 패키지 관리자이다.
Node.js의 패키지 생태계인 npm은 세계에서 가장 큰 오픈 소스 라이브러리 생테계이기도 하다.
NodeJS에서 사용할 수 있는 모듈들을 패키지화하여 모아둔 저장소 역할을 하며,
설치와 관리를 수행할 수 있는 CLI(Command Line Interface)를 제공한다.
서드파티(주 기술을 이용하여 파생되는 따위의 것들을 생산하는 집단) 모듈을 패키지라고 한다.
그리고 모든 패키지엔 package.json 파일이 있다.
npm install + no arguments
npm install를 실행하면 package.json의 dependencies 필드 정보를 기반으로 직접 패키지를 생성한다.
그리고 설치된 모듈들과 함께 node_modules를 생성한다.
npm install은 package.json 파일과 같은 디렉터리에서 실행된다.
또한 package-lock.json 파일을 새성한다.
이 파일은 설치된 정확한 종속 트리를 설명한다.
예를 들어 module A는 module C의 버전 1을 요구하지만,
module B는 module C의 버전 2를 요구할 수도 있다.
이런 module C의 버전 1과 버전 2가 구조적인 형식으로 종속 트리에 설치되는 것이다.
종속 트리를 통해 각 모듈의 버전이 속한 지점을 파악할 수 있게 한다.
이런 점 때문에 package-lock.json 파일은 패키지의 후속 설치에서 더욱 정확한 설치가 가능하게끔 해준다.
npm install + arguments
npm install + arguments를 실행하면 존재하던 node_modules 폴더에 특정 모듈들을 설치하게 된다.
arguments의 내용에 따라 특정한 버전만 설치할 수 있는 등,
구체적이고 정밀하게 설치할 수 있다.
버전을 명시하지 않으면 가장 최신 버전을 다운로드해준다.
npm install 후에 패키지를 공백을 기준으로 나열하면,
패키지들이 설치된다.
npm install folder-name
npm install folder-name인 경우,
프로젝트에 있는 node_module에 모든 패키지들을 다운로드하게 된다.
또한 명시된 폴더의 하위 디렉터리가 package.json와 같은 위치에 있다고 가정하며,
새로운 node_module을 생성하지 않고 기존 node_module에 dependencies가 호이스트 된다.
npm install -g
npm install -g는 패키지를 두 곳에 설치하게 한다.
한 곳은 프로젝트의 디렉터리, 다른 한 곳은 유저의 전역 node_modules 폴더이다.
보통 여러 프로젝트에서 재사용되거나,
CLI에 실행 가능한 커맨드를 제공하는 경우 전역 설치를 한다.
npm install with --save
npm install pacakge --save는 package.json의 dependencies에 명시한 패키지를 추가함으로써
후에 이 패키지가 설치되도록 한다.
npm install with --save-dev
일반적인 dependencies 필드가 아닌 개발 필드에 패키지를 추가함으로써,
개인 빌드에 영향을 주지 않게 한다.
npm install with -p or --production
개발 dependencies 필드의 내용을 제외한 설치를 할 때 사용한다.
https://ko.wikipedia.org/wiki/Npm_(%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4)
https://velog.io/@prayme/NPM%EC%9D%B4%EB%9E%80
https://www.stackchief.com/tutorials/npm%20install%20%7C%20how%20it%20works
'IT > JS' 카테고리의 다른 글
고차 함수 그리고 중첩 함수 (0) | 2021.08.10 |
---|---|
primitive & reference 차이점 그리고 garbage collector에 대하여 (0) | 2021.08.10 |
Hoisting에 대한 정리 (0) | 2021.07.31 |
JS에서의 this란 무엇일까? (0) | 2021.07.26 |
코딩할때 개선할 점 모음 (0) | 2021.07.24 |