Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- github
- createstore 취소선
- 기사퍼스트
- Redux
- JWT
- 테스트 코드
- 정보처리기사필기
- error
- git revert
- froggy
- 프로그래머스
- flexbox
- REACT
- input 컴포넌트
- 백준
- Flexbox Froggy
- 조건부 스타일링
- prettier
- 정보처리기사
- 정보처리기사실기
- 홍달쌤
- flexbox/grid 적용 여부
- position
- 모듈 관리
- justify-content: center;
- 카카오맵
- login button 컴포넌트
- flex item
- flex container
- react 상태 관리 라이브러리
Archives
- Today
- Total
minyoung
npm install의 역할과 package.json, package-lock.json의 차이점 본문
npm install의 역할
✅ npm install의 역할
1. 의존성 설치
- 프로젝트의 package.json 파일에 정의된 dependencies와 devDependencies를 기준으로 필요한 패키지를 설치
- 설치된 패키지는 프로젝트 디렉터리 내의 node_modules 폴더에 저장
2. 하위 의존성 해결
- 각 패키지가 의존하는 서브 패키지(의존성의 의존성)도 함께 설치
- ex) A 패키지가 B와 C를 필요로 한다면, B와 C도 자동으로 설치됨
3. package-lock.json 업데이트
패키지를 설치하거나 업데이트 하면, package-lock.json 파일이 자동으로 생성되거나 수정됨
✅ package.json
- 프로젝트의 설계도 역할을 하는 파일
- 주요 기능 : 프로젝트 이름, 버전, 설명 등 메타데이터 저장, 프로젝트에서 사용하는 의존성(라이브러리)과 버전 범위를 정의
- 이를 통해 협업자가 필요한 의존성을 명확히 파악하고, 동일한 환경을 설정할 수 있음
✅ package-lock.json
- 설치된 패키지의 정확한 버전과 의존성 트리를 기록
- 주요 목적 : 설치된 패키지의 재현성 보장, 협업 및 배포 환경에서 일관성 유지
- 이 파일은자동으로 관리되며, 수동으로 수정하지 않는 것이 좋음
✅ node_modules
- 패키지가 실제로 설치된 폴더로, 모든 의존성 파일이 저장됨
- 프로젝트에서 바로 사용할 수 있는 형태로 패키지가 저장되며, 설치된 파일의 용량이 커지는 원인 중 하나임
- 이 폴더는 일반적으로 버전 관리할 때, Git에서 제외됨 => .gitignore 설정을 통해
❤️ package-lock.json 과 package.json 의 차이점
- 비유하자면 아래와 같음
- package.json: "내가 필요로 하는 라이브러리는 이런 종류와 범위야."
- package-lock.json: "내 컴퓨터에 설치된 라이브러리들은 정확히 이 버전들로 설치되었어."
- "npm install" 설치 과정으로 설명하자면 아래와 같음
package.json은 프로젝트 정보와 의존성에 대한 정보 즉, 설계도로 의존성의 이름과 버전 범위를 정의
(ex: "express": "^4.18.2"는 4.18.2 이상, 5.0.0 미만까지 허용 =>
- **^**는 "최소 이 버전부터 시작해서, 주 버전이 변경되지 않는 범위 내에서 자동으로 최신 버전을 허용"하는 방식
- 즉, 마이너 버전과 패치 버전은 업데이트되지만, 주 버전이 변경되는 버전은 설치되지 않음
- 허용되는 버전: 4.18.2, 4.19.0, 4.20.0, ...
- 허용되지 않는 버전: 5.0.0, 6.0.0
)
package-lock.json은 npm install 명령을 실행하여 로컬에 설치된 패키지들의 정확한 버전과 구조를 기록
node_modules에 설치된 패키지의 정확한 버전, 다운로드 URL, 해시 값(integrity) 등을 포함, 의존성 트리가 어떻게 구성되었는지 명확히 보여줌