대충 알던 package.json 정리
💡 타입스크립트를 공부하다가 갑자기
dependencies
와dev-dependencies
의 차이점이 너무 궁금해서 그동안 대충 알던 package.json 파일에 대해 정리해보려 한다.
📜 package.json
package.json은 현재 프로젝트에 관한 정보와, 패키지 매니저(npm, yarn)을 통해 설치한 모듈들의 의존성을 관리하는 파일이다.
일반적으로 루트 디렉토리에 위치한다.
- 직접 작성해도 되고
npm init
을 통해 생성할 수 있다
package.json은 현재 프로젝트에 관한 정보와, 패키지 매니저(npm, yarn)을 통해 설치한 모듈들의 의존성을 관리하는 파일이다.
일반적으로 루트 디렉토리에 위치한다.
- 직접 작성해도 되고
npm init
을 통해 생성할 수 있다
프로젝트에 대한 명세이며 프로젝트와 패키지 정보를 담고 있다.
- 프로젝트 정보 : name, version 영역
- 패키지 버전 정보 : dependencies 또는 devDependencies 영역
package.json 파일은 반드시 name과 version 항목을 포함해야 한다.
version: x.x.x 형식을 따라야 하며, 작성 규칙을 Semantic Versioning
이라고 한다.
Package 정보
패키지 정보는 dependencies
또는 devDependencies
에 작성된다.
dependencies
: 프로덕트 환경에서 응용 프로그램에 필요한 패키지. 일반적인 경우 의존성을 명시하는 영역이다.devDependencies
: 로컬 개발 및 테스트에만 필요한 패키지. 개발 모드일 때만 의존성을 명시하는 영역이다. 실제로 배포할 때는 필요없는 테스트 도구나 웹팩, 바벨 같은 것들을 넣어주면 된다.
Package와 Module
1) Package
package는 package.json으로 설명되는 파일 또는 디렉토리이다.
패키지는 npm 레지스트리에 공개되기 위해 반드시 package.json 파일을 가지고 있어야 한다.
2) Module
모듈은 node.js의 require() 함수로 로드될 수 있는 node_modules 디렉토리 안의 파일 또는 디렉토리이다.
모듈은 package.json 파일을 가질 필요가 없다. 모든 모듈들이 패키지는 아니다. package.json을 가진 모듈만이 패키지이다.
패키지 지정
패키지를 지정하기 위해서는 패키지의 package.json 파일의 "dependencies" 또는 "devDependencies"에 패키지를 명시해야 한다.
npm install
을 실행하면, npm은 package.json에 나열된 각각의 시멘틱 버전 요구사항을 충족하는 dependencies와 devDependencies를 다운받는다.
Semantic Versioning
버전을 나타내는 점과 숫자들을 보았을 것이다. [MAJOR.MINOR.PATCH]로 구성된 소프트웨어 릴리즈 버전 넘버 네이밍 시스템이다.
최초에 출시된 상태에서는 1.0.0으로 시작한다.
-
MAJOR
Version - (이전 버전과 호환되지 않는 변경)에서는 첫번째 숫자를 1증가시킨다. MAJOR 버전이 올라가면 MINOR, PATCH의 버전은 0이 되어야 한다. ex) 2.0.0 -
MINOR
Version - (이전 버전과 호환되는 새로운 기능)에서는 가운데 숫자를 증가시키고, MINOR 버전이 올라가면 PATCH의 버전은 0이 되어야한다. ex) 1.1.0 -
PATCH
Version - (이전 버전과 호환되는 버그 수정)에서는 3번째 숫자를 증가시킨다. ex) 1.0.1
Tilde(~) & Caret(^)
패키지의 버전에는 ~
, ^
이 포함되어있다. ~는 틸드(tilde), ^는 캐럿(caret)이라 한다.
Tilde(~)
해당 패키지의 PATCH
레벨 변경을 허용하겠다는 의미이다.
~17.0.18은 17.0.0이상, 17.1.0 미만과 같은 의미이다.
즉, 17.1.0 미만의 PATCH
레벨변경을 허용하겠다는 의미이다.
"devDependencies": {
"@types/node": "~17.0.18",
},
Caret(^)
해당 패키지의 MINOR
, PATCH
변경을 허용하겠다는 의미이다.
^17.0.2은 17.0.2 이상, 18.0.0 미만과 같은 의미이다.
즉, 18.0.0 미만의 MINOR
, PATCH
변경을 허용하겠다는 의미이다.
"dependencies": {
"react": "^17.0.2",
}
Author And Source
이 문제에 관하여(대충 알던 package.json 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@pumpkin/대충-알던-package.json-정리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)