본문 바로가기
CS

[JavaScript] npm 살펴보기

by cuda 2022. 9. 28.

npm

npm : Node Package Manager

npm으로 프로젝트 시작

npm init -y

실행 시 package.json 파일이 생성됨을 확인할 수 있다.

{
  "name": "npm_test",   // 프로젝트 이름
  "version": "1.0.0",   // 프로젝트 버전
  "description": "",    // 프로젝트 설명
  "main": "index.js",  
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },        // 프로젝트 내부에서 사용할 수 있는 명령들
  "keywords": [],
  "author": "",
  "license": "ISC"
}

npm으로 패키지 설치

npm install "설치하고자 하는 패키지" --save-dev   #or
npm i "설치하고자 하는 패키지" -D  #or
npm install "설치하고자 하는 패키지" -D  

생성된 node_modules 디렉토리를 확인해보면, 설치한 패키지가 있는 것을 확인할 수 있다.

또한, 이 후에 package.json을 확인해보면 변경점이 있다.

{
  "name": "01_npm",
  "version": "1.0.0",
  "description": "npm : Node Package Manager",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "parcel-bundler": "^1.12.5" // 설치한 package 내역
  }
}

npm install -D로 패키지를 설치하면, 해당 내역이 package.json에 기록됨
이렇게 내역이 남게 되면, 패키지를 지우게 되더라도 추후

npm install

명령어를 통해 package.json 파일에 기록된 패키지를 한번에 설치할 수 있다.

npm install "설치하고자 하는 패키지"

다음과 같이 -D를 제외한 npm install 명령어를 사용하면 package.json파일은 다음과 같이 변한다.

{
  "name": "01_npm",
  "version": "1.0.0",
  "description": "npm : Node Package Manager",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "parcel-bundler": "^1.12.5"
  },
  "dependencies": {
    "lodash": "^4.17.21"    // 변경점
  }
}

npm install -D와 npm install의 차이점

npm install "설치하고자 하는 패키지" --save-dev   #or
npm i "설치하고자 하는 패키지" -D  #or
npm install "설치하고자 하는 패키지" -D  

npm install -D의 경우, 개발용 의존성 패키지 설치로,

특정 패키지가 개발할때만 필요하고, 웹페이지에서는 필요없을 때 사용

npm install의 경우, 일반 의존성 패키지 설치로,

특정 패키지가 웹브라우저에서 동작할 때 사용


package-lock.json

설치하고자 하는 패키지들이 사용하는 패키지에 대한 정보

'CS' 카테고리의 다른 글

[JavaScript] 표현식과 문  (0) 2022.10.01
[JavaScript] 변수(variable)란?  (0) 2022.09.28
[JavaScript] nvm 살펴보기  (0) 2022.09.28
[Go] Go에서의 표준 입출력(with fmt)  (1) 2022.09.21
[Go] Go에서의 변수  (1) 2022.09.21

댓글