{
"name": "my-app",
"version": "1.0.0",
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build"
},
"dependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
"devDependencies": {
"eslint": "^8.20.0"
}
}
dependencies / devDependencies의 버전은 범위 지정 가능(^, ~)"react": "^18.2.0" → 18.x.x 최신 버전 설치 가능{
"name": "my-app",
"lockfileVersion": 2,
"dependencies": {
"react": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
"integrity": "sha512-..."
},
"react-dom": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
"integrity": "sha512-..."
}
}
}
npm install 시 자동으로 생성/업데이트| 항목 | package.json | package-lock.json |
|---|---|---|
| 작성 | 사람이 직접 | npm 자동 생성 |
| 목적 | 필요한 패키지 목록 정의 | 설치된 정확한 패키지 버전 기록 |
| 버전 | 범위 지정 가능 (^, ~) | 정확한 버전 고정 |
| 수정 | 직접 가능 | 보통 직접 수정하지 않음 |
| 역할 | 프로젝트 요구사항 정의 | 프로젝트 재현성 확보 |
💡 Tip
package.json : 무슨 패키지가 필요한지package-lock.json : 설치된 패키지가 정확히 어떤 버전인지package-lock.json도 같이 Git에 커밋해야 동일한 환경 유지 가능