Node.js 인터뷰 질문 10

질문: package.json 파일이란 무엇인가요?

답변:

package.json 파일은 Node.js 프로젝트의 핵심 구성 파일로, 프로젝트에 대한 메타데이터와 의존성 정보를 JSON 형식으로 저장합니다. 이 파일은 프로젝트의 루트 디렉토리에 위치하며, npm(Node Package Manager)이 프로젝트를 관리하는 데 필수적입니다.

package.json 파일의 생성

# 대화형으로 생성
npm init

# 기본값으로 빠르게 생성
npm init -y

주요 필드와 역할

기본 메타데이터:

{
  "name": "my-node-app", // 패키지 이름 (필수)
  "version": "1.0.0", // 버전 (필수, 시맨틱 버전 형식)
  "description": "My Node.js application", // 프로젝트 설명
  "main": "index.js", // 메인 진입점 파일
  "private": true, // true면 npm에 배포 방지
  "author": "홍길동 <hong@example.com>", // 작성자 정보
  "license": "MIT", // 라이선스 정보
  "repository": {
    // 소스 코드 저장소 정보
    "type": "git",
    "url": "https://github.com/username/repo.git"
  }
}

의존성 관리:

{
  "dependencies": {
    // 프로덕션 의존성
    "express": "^4.17.1",
    "mongoose": "^6.0.12"
  },
  "devDependencies": {
    // 개발 의존성
    "jest": "^27.3.1",
    "nodemon": "^2.0.14"
  },
  "peerDependencies": {
    // 피어 의존성
    "react": "^17.0.0"
  },
  "optionalDependencies": {
    // 선택적 의존성
    "fsevents": "^2.3.2"
  },
  "engines": {
    // 필요한 Node.js/npm 버전
    "node": ">=14.0.0",
    "npm": ">=6.0.0"
  }
}

스크립트:

{
  "scripts": {
    "start": "node index.js", // npm start로 실행
    "dev": "nodemon index.js", // npm run dev로 실행
    "test": "jest", // npm test로 실행
    "build": "webpack --mode production", // npm run build로 실행
    "lint": "eslint src/**/*.js" // npm run lint로 실행
  }
}

설정:

{
  "config": {
    // 환경 설정 값
    "port": "3000"
  },
  "browserslist": [
    // 지원할 브라우저
    "> 1%",
    "not dead"
  ]
}

package.json의 중요성

  1. 의존성 추적: 프로젝트에 필요한 모든 패키지와 버전을 기록합니다.
  2. 재현 가능한 빌드: 다른 환경에서도 동일한 의존성으로 프로젝트를 설정할 수 있습니다.
  3. 스크립트 자동화: 일반적인 작업을 npm 스크립트로 자동화할 수 있습니다.
  4. 버전 관리: 프로젝트의 버전을 체계적으로 관리할 수 있습니다.
  5. 배포 관리: 패키지 배포 시 필요한 정보를 제공합니다.

package-lock.json과의 관계

  • package.json이 의존성의 "허용 가능한 버전 범위"를 정의한다면,
  • package-lock.json은 실제로 설치된 "정확한 버전"을 기록합니다.
  • package-lock.json은 모든 개발자에게 정확히 동일한 의존성 트리를 보장합니다.

버전 관리

package.json은 시맨틱 버전 관리(Semantic Versioning)를 따릅니다:

  • ^4.17.1: 호환되는 최신 업데이트 허용 (4.x.x)
  • ~4.17.1: 패치 업데이트만 허용 (4.17.x)
  • 4.17.1: 정확한 버전만 사용
  • >=4.17.1: 해당 버전 이상 사용
  • *: 최신 버전 사용

package.json 파일은 Node.js 프로젝트의 '매니페스트'로, 프로젝트 설정의 중심점이자 협업과 배포의 기반이 됩니다.

results matching ""

    No results matching ""