본문 바로가기

개발

[Node.js] package.json, package-lock.json

🍏package.json

=프로젝트에서 사용하는 패키지들의 정보를 담고 있는 파일

패키지와 패키지의 버전 정보를 담고 있다.

 

예시

{
  "name": "mongoose",
  "version": "0.0.1",
  "description": "구스구스몽구스",
  "main": "app.js",
  "scripts": {
    "start": "nodemon app",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "yu",
  "license": "MIT",
  "dependencies": {
    "express": "^4.17.1",
    "mongoose": "^5.9.10",
    "morgan": "^1.10.0",
    "nunjucks": "^3.2.1"
  },
  "devDependencies": {
    "nodemon": "^2.0.3"
  }
}

 

 

+ scripts

scripts 내부의 것들은 별명을 붙이는 것이다

예를들어 test의 경우 npm test 를 콘솔에 작성하면 에러를 발생 시키게 한 것이다

 

 

+ devDependencies, dependencies

devDependencies = 개발할 때만 사용 npm i -D nodemon 이런식으로 설치하면 devDependencies에 들어감

dependencies = 배포할 때도 사용

 

 

+ 전역 설치

= package.json에 기록되지 않지만 콘솔에서 명령어처럼 사용할 수 있는 설치

ex)

npm i -g rimraf            전역 설치
rimraf node_modeuls        콘솔에 입력하여 node_modules를 삭제

 

 

+ 전역 설치 대안

= package.json에 기록되지 않는다는 불편함 때문에 아래 방식을 사용한다.

npm i rimraf -D  			개발자용으로 설치
npx rimraf node_modules 		전역설치 하지 않고도 콘솔에서 사용할 수 있다.

 

 

 

사용

node project시작 전에 터미널에서 아래의 명령어를 각각 수행 한 후 프로젝트를 시작한다. 

npm init                                     package.json을 만든다
npm install                                  package.json에 기록된 패키지들을 다운받는다

 

npm i를 한 후에는 node_modules 폴더안에 패키지들이 설치된다.

용량이 많으니 gitignore에 추가해두고 배포할때도 빼고 한다.

 

 

🍏package-lock.json

=확실히 버전을 고정해놔서 버전문제가 생기지 않게 하는 것

 

 

🍏패키지 버전

SemVer 버저닝

=노드 패키지 버전은 SemVer방식을 사용 ex) 4.3.23, 1.0.3

1.2.3

첫번째 = 하위버전과 호환되지 않는 수정 major

두번째 = 하위버전과 호환되는 수정 minor

세번째 = 기능에 버그 해결 patch

 

버전 기호

^1.1.1 = minor버전까지만 업데이트. 첫번째 자리만 고정하겠다.

~1.19.0 = patch 버전까지만 업데이트. 두번째 자리까지 고정하겠다.

3.4.4 = 세번째 자리까지 다 고정하겠다.

 

패키지 버전별 설치

npm i 패키지명@3 = 3버전을 설치

npm i 패키지명@latest = 최신 버전을 설치

npm i 패키지명@next = 아직 나오진 않았지만 테스트용 설치