📍
주차별 멘토링 미션!
당연히 존재하는 파일이기만 했던 package.json에 대해 정리해 보았다.
내 프로젝트가 의존하고 있는 패키지들은 어떤것인지 또, 그 패키지들이 의존하고 있는 패키지는
어떻게 되어있는지 막연하게 알고 있던것들을 알게 되었다.
앞으로 있을 프로젝트에서 이 패키지들을 어떻게 관리할 수 있을지 더 공부해봐야지!
package.json | npm Docs
Specifics of npm's package.json handling
docs.npmjs.com
1. NPM(Node Package Manager)
- 일단 package.json의 구성을 보기전에 알고 있어야 하는 기능
- 전세계의 개발자들이 만든 다양한 기능(패키지, 모듈)들을 관리
- 이 기능들을 프로젝트에 설치하고 관리 할 때 사용
- 여기서 패키지, 모듈은 외부의 누군가가 만들어 놓은 기능들임
2. package.json이란?
package.json
프로젝트가 직접적으로 의존하고 있는 패키지의 정보를 관리하는 파일
package-rock.json
의존하고 있는 패키지에 연결된 다른 패키지들의 정보를 명시해 놓는 파일
3. package.json 구성 요소 분석해보기
1) 생성하기
- 프로젝트 이름 / 버전 / 설명등 수동으로 입력하고 생성하기
npm init
- 기본값으로 생성하기
npm init -y
2) 기본값으로 생성했을 때
{
"name": "js",
"version": "1.0.0",
"description": "",
"main": "main.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
- "name" : 패키지의 이름
- "version" : 패키지의 버전
- "description" : 패키지의 설명
- "main": 패키지를 설치했을 때 프로젝트내에 어떤 파일을 불러올지 결정
- "scripts": 프로젝트내에서 빈번하게 수행되는 작업 등록
- "keywords": 검색할 때 보여지는 패키지 키워드 목록
- "author": 프로젝트의 저자
- "license": 프로젝트의 라이센스
4. 의존성이란?
우리가 만들 하나의 프로젝트가 외부의 다른 개발자들이 만들어 놓은 패키지에 의존해서 동작하고 있다는 것을 의미한다.
1) dependencies
- 일반 의존성 패키지
- 브라우저에서 직접적으로 동작할 패키지
- npm install 명령어를 통해서 설치한 라이브러리들이 들어가 있다.
- 즉, 애플리케이션을 배포할 때 사용할 라이브러리들이 담겨있는 곳
2) devDependencies
- 개발 의존성 패키지
- 개발할 때만 사용하는 패키지들
- 실제 브라우저에서 동작하지 않음
3) dependencies와 devDependencies의 차이점
- 설치 방법이 다르다.
- dependencies 에 설치된 라이브러리는 배포할 때 포함되지만 devDependencies에 설치된 라이브러리는 개발할 때 필요한 라이브러리기 때문에 배포할 때 포함되지 않는다.
5. 유의적 버전으로 버전관리 하기
프로젝트가 개발되는 특정한 시점 상태에다가 의미를 부여해서 숫자를 매기는 방법.
1)
Major.Minor.Patch
4.17.21
- Major : 기존 버전과 호환되지 않는 새로운 버전 (기존 버전은 전버전인 3인 경우, 크게 변경사항이 있을때)
- Minor : 기존 버전과 호환되는 기능이 추가된 버전
- Patch : 기존 버전과 호환되는 버그 및 오타 등이 수정된 버전
2)
^Major.Minor.Patch
^4.17.21
~Major.Minor.Patch
~4.17.21
- ^ : Major 버전 안에서 가장 최신 버전으로 업데이트 가능
- ~ : Minor 버전 안에서 가장 최신 버전으로 업데이트 가능(즉 Patch만 업데이트)
- 보통은 ^ 를 사용해서 업데이트 함
📌출처
패스트캠퍼스 초격차 패키지 'JavaScript 마스터'
'기록 > TIL' 카테고리의 다른 글
#04 IT 아티클 - 챗GPT (0) | 2023.12.10 |
---|---|
#02 사용해보고 싶은 CSS 아카이브 (0) | 2023.11.14 |
#01 git 과 github의 관계 (2) | 2023.11.09 |