본문 바로가기
개발공부/Node.js

package.json이 왜 중요할까?

by zing! 2025. 1. 22.

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