package.json 필드 정리

그거아냐·2025년 5월 26일

리액트

목록 보기
10/10

1. 📘 기본 정보

[일반]

필드설명
name패키지 이름 (npm 배포용, 소문자/하이픈 사용 가능)
version버전 정보 (major.minor.patch 형식)
description프로젝트 설명
author작성자 정보 (이름 <이메일>)
license라이선스 종류 (MIT, ISC 등)
keywordsnpm 검색 키워드 배열
repositoryGitHub 등의 저장소 주소

[고급]

필드설명
homepage프로젝트 또는 문서의 웹 링크
bugs버그 리포트용 URL 또는 이메일
privatetrue 설정 시 npm publish 차단 (내부 프로젝트용)

2. ⚙️ 실행/명령어 관련

[일반]

필드설명
scriptsnpm run으로 실행 가능한 명령어 집합
mainCommonJS 진입점 파일 (require() 시 참조됨)
type모듈 시스템 선택 ("module" = ESM, "commonjs" = CJS)

항목CommonJS (CJS)ESM (ES Modules)
문법require(), module.exportsimport, export
동기/비동기동기 로딩 (Node.js 중심)비동기 로딩 (브라우저와 호환)
사용 환경Node.js (전통적 방식)브라우저, Node.js (현대 표준)
실행 시점런타임에 동작정적 분석 가능 (트리 셰이킹 등 최적화에 유리)
예시 파일.js, .cjs.mjs 또는 type: "module" 설정된 .js

[고급]

필드설명
binCLI 명령어 매핑 (전역 설치 시 npx <명령어>로 실행 가능)
exports외부에 노출할 모듈 경로 설정 (ESM 지원 시 사용)
imports내부 전용 별칭 정의 (#utils 등, Node 16+ 지원)
filesnpm publish 시 포함할 파일 목록 지정

3. 📦 종속성 관리

[일반]

필드설명
dependencies실행에 필요한 패키지 목록
devDependencies개발 중에만 필요한 패키지 (예: eslint, vite 등)

[고급]

필드설명
peerDependencies함께 설치되어야 하는 패키지 요구 버전 (라이브러리 배포 시 유용)
optionalDependencies설치 실패해도 무시되는 선택적 종속성
bundledDependencies배포 시 함께 포함시킬 패키지 목록 (구형 방식)
overrides특정 패키지의 하위 버전 강제 고정 (npm 8+ 이상 지원)

4. 🧱 모듈 및 번들 설정

[일반]

필드설명
type모듈 방식 지정 ("module" 또는 "commonjs")

[고급]

필드설명
moduleESM 전용 진입점 경로 (import 사용 시 참조됨)
sideEffects트리 셰이킹에서 제외할 부작용 있는 파일 지정 (false 또는 배열)
browser브라우저 환경에서 대체할 모듈 경로 지정 (Webpack용)

5. 🖥 실행 환경 및 배포 설정

[일반]

필드설명
engines허용 Node.js/npm 버전 범위 지정
privatetrue 설정 시 publish 금지 (내부 전용 프로젝트)

[고급]

필드설명
os / cpu특정 OS 또는 CPU 아키텍처에서만 동작하도록 제한
workspaces모노레포 하위 프로젝트 지정 (yarn/npm monorepo용)

profile
지금 하고 있는 그거 그거아냐

0개의 댓글