NPM(Node Package Manager)
자바스크립트 패키지 매니저이고 NodeJS에서 사용할 수 있는 모듈들을 패키지화하여 모아둔 저장소 역할을 하며 설치/관리를 수행할 수 있는 CLI를 제공한다.
패키지 설치
npm i <패키지명> 명령어로 손쉽게 패키지가 설치된다.
설치에는 local install과 global install이 있다. 기본값은 local install이고 local package는 해당 프로젝트 내에서만 사용할 수 있다.
npm i -g <패키지명> 명령어로 global install을 할 수 있다. global package는 모든 프로젝트에서 공통으로 사용할 수 있다. global packge install path는 다음과 같다.
의존성 관리
패키지들의 버전이 빈번하게 업데이트되므로 프로젝트가 의존하고 있는 패키지들이 관리될 필요가 있다.
npm에서는 package.json 파일로 프로젝트의 정보와 패키지들의 의존성을 관리한다.
package.json
package.json 에는 사용하고 있는 패키지들의 명세가 작성되어 있기 때문에 프로젝트를 다른 사람에게 공유하고 싶다면 package.json을 공유하여 개발 환경을 빠르게 구축할 수 있다. JAVA에서는 Maven의 pom.xml과 비슷한 역할을 한다고 한다.
package.json은 프로젝트 루트에서 npm init -y 명령어로 생성할 수 있다.
ex)
{
"name": "saojeong-service",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"@sentry/node": "^5.19.2",
"cookie-parser": "~1.4.4",
"debug": "~2.6.9",
"dotenv": "^8.2.0",
"eslint-config-airbnb-base": "^14.2.0",
"eslint-plugin-import": "^2.22.0",
"express": "~4.16.1",
"faker": "^4.1.0",
"hbs": "^4.1.1",
"http-errors": "~1.6.3",
"mariadb": "^2.4.2",
"method-override": "^3.0.0",
"morgan": "~1.9.1"
},
"devDependencies": {
"eslint": "^7.5.0",
"eslint-config-prettier": "^6.11.0",
"eslint-plugin-prettier": "^3.1.4",
"mysql2": "^2.1.0",
"prettier": "^2.0.5"
}
}
package.json 에서 name 과 version 은 생략할 수 없다.
dependencies 에는 프로젝트가 의존하는 패키지들의 이름과 버전을 명시한다.
패키지에서 사용하는 패키지들을 말한다. npm i <패키지명> 으로 패키지를 설치하면 dependencies 에 명시되지 않는다. dependencies 에 명시하려면 npm i --save <패키지명> 을 사용하자.
NPM@5부터는 --save가 기본 옵션이라고 한다.
devDependencies 에서는 개발 단계에서만 사용하는 패키지를 명시한다. npm i --save-dev <패키지명> 으로 설치하면 된다.
만약 내가 Git을 통해 프로젝트를 배포받았다면 프로젝트 루트에서 npm i 를 입력해야 프로젝트가 정상적으로 동작한다.
패키지 파일들은 모두 gitignore 당하기 때문에 package.json 에 명시된 dependencies 를 보고 새로 설치해야한다.
'개발노트 > Node.js' 카테고리의 다른 글
[NodeJS] express 프로젝트 생성 ( Side Project - 스터디 사라져서 중단... ) (0) | 2021.12.03 |
---|---|
[Node.JS] MySQL 모듈화 (0) | 2021.12.02 |
[Node.JS] ConnectionPool (0) | 2021.11.30 |
[Node.js] Tutorial - 서버 만들기 (0) | 2021.09.23 |
[Node.js] Node.js와 Mysql 연동 에러 (Client does not support authentication protocol requested by server; consider upgrading MySQL client) (0) | 2021.06.14 |