package.json ?
Node.js 프로젝트 및 JavaScript 생태계에서 프로젝트를 관리하는 핵심 설정 파일
Node.js와 package.json의 관계
- Node.js는 npm또는 Yarn을 통해 패키지를 설치하고 관리하는데 , package.json은 설치한 패키지의 정보를 기록하여 프로젝트의 종속성을 명시한다.
- Node.js는 package.json의 scripts 항목을 활용하여 명령어를 실행
package.json은 Node.js 프로젝트에서 매우 중요한 역할을 한다. (삭제 금지 !!)
- 의존성 관리: 프로젝트에서 필요한 외부 라이브러리와 패키지들이 명시된다.
- 스크립트 정의: 자주 사용하는 명령어들을 scripts 항목에 정의할 수 있다.
- 프로젝트 메타데이터: 프로젝트 이름, 버전, 설명, 라이선스 등의 정보를 포함하고 있어 프로젝트에 대한 기본적인 메타데이터를 제공한다. ( 다른 사람들과 공유하거나 배포할 때 유용하다.
- 프로젝트 설정 및 환경 관리
- 자동화된 작업
- 버전 관리: 프로젝트에서 사용하는 각 라이브러리의 버전을 명시하여, 특정 버전의 패키지를 사용할 수 있도록 보장 ( 의존성 충돌이나 버전 호환성 문제를 줄일 수 있다)
package.json 작성 규칙
- 형식: package.json은 JSON 형식으로 작성되며, 반드시 key: value 쌍으로 구성된다.
JSON (JavaScript Object Notation) ?
- key(키) : value(값) 쌍으로 데이터를 표현
- key에는 반드시 문자열이어야 하며, 큰따옴표(")로 감싼다.
- value에는 숫자,문자열,배열,객체,불리언,null 등이 올 수 있다.
- 문법: 각 항목은 쉼표로 구분되며, 마지막 항목 뒤에는 쉼표를 넣지 않는다.
- 주석 불가: JSON 형식에서는 주석을 사용 X
{
"name": "project-name",
"version": "1.0.0",
"description": "The best way to watch videos.",
"main": "index.js",
"scripts": {
"dev": "nodemon --exec babel-node src/server.js"
},
"dependencies": {
"express": "^4.21.2"
},
"devDependencies": {
"@babel/core": "^7.26.0",
"@babel/node": "^7.26.0",
"@babel/preset-env": "^7.26.0",
"nodemon": "^3.1.9"
}
}
각 항목 설명
name:
- 프로젝트의 이름이며, 프로젝트를 배포하거나 공유할 때 사용
- 소문자와 하이픈(-)만 사용
version:
- 프로젝트의 버전 번호입니다. major.minor.patch 형식
description:
- 프로젝트에 대한 간단한 설명이며, 프로젝트를 다른 사람에게 설명할 때 유용
main:
- 프로젝트의 진입점 파일을 지정. 보통 index.js나 app.js 파일이 여기에 해당
scripts:
- 프로젝트 내에서 반복적으로 실행되는 명령어들을 효율적으로 관리하는 데 유용
- 다양한 작업을 자동화하고, 명령어 이름을 통해 작업을 쉽게 실행할 수 있도록 해준다.
- 예 ) npm run dev
license:
- 프로젝트의 라이선스 종류를 명시한다 (예: MIT, ISC, GPL-3.0 등)
dependencies:
- 프로젝트에서 실행에 필요한 외부 라이브러리들을 명시 예)express, react, mongoose 등
devDependencies:
- 개발 환경에서만 필요한 라이브러리들을 명시 예) babel
- 개발자들(인간)에게 필요한 dependencies
- 명령어 : --save-dev
'개발공부 > Node.js' 카테고리의 다른 글
라우트? 라우터? (1) | 2025.01.24 |
---|---|
HTTP method (3) | 2025.01.23 |
왓 더 PUG (0) | 2025.01.11 |
module (import,export) (0) | 2025.01.09 |
[Node.js] middleware - morgan (0) | 2025.01.03 |