[Node.js] package.json에 대해
1. package.json이란?
package.json이란 현재 프로젝트에 관한 정보와 패키지 매니저(npm, yarn)을 통해 설치한 모듈들의 의존성을 관리하는 파일이다.
2. package.json 초기 생성
아래와 같은 명령어로 초기의 package.json파일을 생성할 수 있다.
$npm init -y
뒤에 -y는 별도의 설정 없이 default 값으로 생성하는 옵션이다.
이를 통해 아래와 같이 파일이 생성이 된다.
아래는 React 프로젝트의 샘플 package.json 내용이다.
패키지 매니저(npm, yarn)를 통해 설치한 모듈들이 dependencies안에 해당 모듈의 이름과 버전 내용이 추가된다.
{
"name": "react-sample",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.16.4",
"@testing-library/react": "^13.1.1",
"@testing-library/user-event": "^13.5.0",
"react": "^18.0.0",
"react-dom": "^18.0.0",
"react-scripts": "5.0.1",
"web-vitals": "^2.1.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
특정 버전인 경우
"react": "18.0.0",
Tilde Ranges
"react": "~18.0.0",
Tilde Ranges(~)의 경우 "버전과 거의 동일" 이라는 뜻을 의미하며, 부 버전을 증가시키지 않고 향후 모든 패치 버전으로 업데이트한다. ~1.2.3은 1.2.3에서 <1.3.0까지의 릴리스를 사용한다.
Caret Ranges
"react": "^18.0.0",
Caret Range(^)의 경우에는 "버전과 호환되는" 이르는 뜻을 갖고 있으며, 주 버전을 증가시키지 않고 모든 부 / 패치 버전으로 업데이트한다. ^2.3.4는 2.3.4에서 <3.0.0까지의 릴리스를 사용한다.
3. package.json 용도
위에서 언급하였듯이 package.json은 프로젝트의 의존성 모듈들과 그 버전을 관리하는 하나의 파일이다.
프로젝트에 사용되는 모듈들이 설치될 때마다 dependencies에는 해당 모듈들의 내용이 추가가 된다.
그렇게 되면 설치된 모듈들을 공동 작업 레포지토리에 업로드 및 다운로드 할 필요없이,
다음 명령어로 package.json에 명시된 의존성 모듈들을 모두 설치할 수 있다.
$npm install
#References
https://phsun102.tistory.com/28