Programming/Node.js
Node.js package.json이란
나쵸캣
2022. 12. 25. 17:28
반응형
package.json이란?
Node.js 프로젝트에 관한 정보와 Package manager(npm, yarn 등)을 통해 설치한 모듈들의 의존성(Dependecies)을 관리하는 파일.
package.json 주요 구성
보통 package.json에 포함되는 fields
- 프로젝트에 관한 정보
- name
: 패키지 또는 프로젝트의 이름 *필수 fields - version
: 패키지 또는 프로젝트의 이름 *필수 fields
semantic versioning guidelines를 따른다. Major.Minor.Patch의 형태(1.2.3) - description
: 패키지 또는 프로젝트에 대한 설명 - author / contributor
: 패키지 또는 프로젝트의 한 사람의 저자 (author) / 다수의 저자(contributor) - email
:패키지 또는 프로젝트의 저자의 이메일 - keywords
: 패키지 또는 프로젝트의 주요 검색 키워드. 문자열 배열로 설명 ex)["node.js", "react.js"] - homepage
: 프로젝트 홈페이지 주소 - main
: 패키지 또는 프로젝트의 진입점(entry point)가 되는 모듈의 ID - repository
: 패키지 또는 프로젝트의 repository 정보. - private
: 이 필드를 true로 설정하면 중앙 저장소에 저장하지 않음 - license
: 패키지 또는 프로젝트 사용을 위한 license - config
: 프로젝트에서 config 필드에 있는 값을 환경 변수처럼 사용
- name
- 개발에 사용되는 모듈 의존성들(dependencies)
- dependencies
: 현재 프로젝트를 실행하는데 필수적인 라이브러리들이 포함이 됩니다. 이는 컴파일을 수행하고 런타임 단계에서 수행되는 라이브러리들이 이에 해당 됩니다. - devDependencies
: 현재 프로젝트를 개발하고 테스트를 하는데 사용되지만, 런타임에는 필요 없는 라이브러리들이 포함이 됩니다.
ex) 컴파일 단계에서 사용하는 타입스크립트와 관련된 라이브러리 @types/xxx의 경우 이에 해당 된다. 타입스크립트의 컴파일러를 통해서 실행 할 수 있다. 이는 런타임 단계에서는 수행되지 않고 이전 컴파일 단계에서까지만 수행되는 라이브러리가 해당 됩니다. - peerDependencies
:런타임에는 필요하기는 하지만 소스코드내에 의존성을 직접 관리하지 않는 라이브러리들이 포함된다. 소스코드 내에 require , import로 불러오지는 않지만 라이브러리 의존성으로 필요한 경우가 이에 해당 됩니다.
- dependencies
- CLI에서 사용하는 명령어 정의
- scripts
: 패키지 또는 프로젝트 생명 주기에서 다양한 타이밍에 사용되는 command를 alias(별칭)을 통해 지정해 둘 수 있는 dictionary
- scripts
package.json 예시
{
"name": "nachocat_example",
"version": "0.1.0",
"description": "nachocat_example_project",
"author": "nachocat",
"email": "nachocat@ncahot.com",
"keywords": ["node.js, react.js"],
"homepage": "https://nachocat.com",
"main": "src/index.js",
"repository": {"type": "git", "url" : "https://github.com/nachocat/example.git" },
"private": true,
"license": "ISC",
"config": {
"port": "8080"
},
"dependencies": {
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-router-dom": "^5.3.4",
"react-router-stack": "^0.2.5",
"react-scripts": "5.0.1"
},
"devDependices": {
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10",
},
"peerDependencies": {
"react-spring": "^9.2.4",
"react-use-gesture": "^9.1.3"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject",
}
}
반응형