단북
프론트엔드 기술 면접·실무 프로젝트 지식

package.json의 주요 필드와 역할을 설명할 수 있나요?

프로젝트 메타데이터·의존성·스크립트·진입점 등 package.json의 핵심 필드와 역할을 정리합니다.

package.json 은 Node.js 프로젝트의 매니페스트(manifest) 파일로, 프로젝트 정보·의존성·실행 스크립트·모듈 진입점 등을 정의합니다. 패키지 매니저(npm, bun 등)와 번들러가 이 파일을 읽어 동작합니다.

주요 필드

  • name / version — 패키지 이름과 버전(SemVer). 배포·의존성 식별에 사용.
  • scriptsbun run <name>으로 실행하는 명령 정의(build, dev, test 등).
  • dependencies — 런타임에 필요한 의존성. 배포 시 함께 설치됨.
  • devDependencies — 개발·빌드에만 필요한 의존성(타입, 번들러, 테스트 등).
  • peerDependencies — 이 패키지를 쓰는 쪽이 직접 설치해야 하는 호환 의존성(예: 플러그인이 요구하는 react).
  • type"module"이면 ESM, 기본("commonjs")이면 CJS로 해석.
  • main / module / exports — 패키지의 진입점. exports는 조건부 진입점(import/require, 경로 매핑)을 정밀 제어하며 최신 표준.
  • engines — 요구하는 Node 등 런타임 버전 범위.
  • privatetrue면 실수로 npm에 publish되는 것을 방지.

버전 표기 (SemVer)

{
  "dependencies": {
    "react": "^18.2.0", // 18.x.x 호환 범위 (마이너·패치 업데이트 허용)
    "lodash": "~4.17.21", // 4.17.x 범위 (패치만 허용)
    "left-pad": "1.3.0" // 정확히 이 버전
  }
}
  • ^ (캐럿) — 가장 왼쪽 0이 아닌 자리를 고정하고 그 아래를 허용(보통 마이너·패치).
  • ~ (틸드) — 주로 패치 수준만 허용.
  • 정확한 버전 고정은 lock 파일과 함께 재현 가능한 설치를 보장합니다.

package.json 필드에 대한 설명으로 옳은 것은?

이 레슨을 다 읽으셨나요?

완료 표시는 이 브라우저에 저장됩니다.