그동안 깊게 살펴보지 않았던 package.json
기본을 놓치지 말자
즉, 오픈소스 패키지 생태계를 사용하기 위한 명세서 이자
프로젝트의 의존성 관리를 위한 명세서 또 이 생태계로의 배포를 위한 명세서이다.
// package.json
{
"name": "PROJECT_NAME",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
}
"engines": { "node" : ">=0.10.3 <0.12" }
}
name: 이 패키지의 이름을 나타내며 프로젝트(프로덕트)의 이름을 나타낸다.
version: 어플리케이션의 버전을 명시하는 항목 x.x.x의 형태로 작성 - 시멘틱 버저닝
Major(주主)
버전을 올린다.Minor(부部)
버전을 올린다.Patch(수修)
버전을 올린다.description: 문자열로 기술한 패키지에 대한 설명
main: 패키지의 진입점(entry point
)이 되는 모듈의 ID
scripts: 패키지의 생명주기에서 다양한 타이밍에 자주 사용할 command
를 alias
통해
지정해 둘 수 있는 dictionary
engines: 동작가능한 node 버전을 명시
// package.json
"dependencies": {
"@types/express": "^4.17.15",
"cors": "^2.8.5",
"express": "^4.18.2",
"typescript": "^4.9.4"
},
"devDependencies": {
"@types/cors": "^2.8.13",
"nodemon": "^2.0.20",
"ts-node": "^10.9.1"
},
프로젝트가 의존하고 있는 패키지를 일괄적으로 관리하기 위한 필드
dependencies
프로덕션 환경 에서 응용 프로그램에 필요한 패키지
devDependencies
로컬 개발 및 테스트에만 필요한 의존 패키지
--save-dev <package>
모듈 버전을 명시할 때, 틸드(~), 캐럿(^), 고정 버전 으로 명시
틸드, 캐럿, 고정 명시 마다 해당 버전이 업데이트 돼서 새롭게 install 될 때
새롭게 업데이트해서 받아들이는 버전 범위가 다름
package.json
는 패키지 버전 정보를 필드와 캐럿등의 방식으로 version range
를 사용lock
파일은 node_modules
트리 또는 package.json
이 수정될 때, 자동으로 생성Reference