| 필드 | 설명 |
|---|---|
name | 패키지 이름 (npm 배포용, 소문자/하이픈 사용 가능) |
version | 버전 정보 (major.minor.patch 형식) |
description | 프로젝트 설명 |
author | 작성자 정보 (이름 <이메일>) |
license | 라이선스 종류 (MIT, ISC 등) |
keywords | npm 검색 키워드 배열 |
repository | GitHub 등의 저장소 주소 |
| 필드 | 설명 |
|---|---|
homepage | 프로젝트 또는 문서의 웹 링크 |
bugs | 버그 리포트용 URL 또는 이메일 |
private | true 설정 시 npm publish 차단 (내부 프로젝트용) |
| 필드 | 설명 |
|---|---|
scripts | npm run으로 실행 가능한 명령어 집합 |
main | CommonJS 진입점 파일 (require() 시 참조됨) |
type | 모듈 시스템 선택 ("module" = ESM, "commonjs" = CJS) |
| 항목 | CommonJS (CJS) | ESM (ES Modules) |
|---|---|---|
| 문법 | require(), module.exports | import, export |
| 동기/비동기 | 동기 로딩 (Node.js 중심) | 비동기 로딩 (브라우저와 호환) |
| 사용 환경 | Node.js (전통적 방식) | 브라우저, Node.js (현대 표준) |
| 실행 시점 | 런타임에 동작 | 정적 분석 가능 (트리 셰이킹 등 최적화에 유리) |
| 예시 파일 | .js, .cjs | .mjs 또는 type: "module" 설정된 .js |
| 필드 | 설명 |
|---|---|
bin | CLI 명령어 매핑 (전역 설치 시 npx <명령어>로 실행 가능) |
exports | 외부에 노출할 모듈 경로 설정 (ESM 지원 시 사용) |
imports | 내부 전용 별칭 정의 (#utils 등, Node 16+ 지원) |
files | npm publish 시 포함할 파일 목록 지정 |
| 필드 | 설명 |
|---|---|
dependencies | 실행에 필요한 패키지 목록 |
devDependencies | 개발 중에만 필요한 패키지 (예: eslint, vite 등) |
| 필드 | 설명 |
|---|---|
peerDependencies | 함께 설치되어야 하는 패키지 요구 버전 (라이브러리 배포 시 유용) |
optionalDependencies | 설치 실패해도 무시되는 선택적 종속성 |
bundledDependencies | 배포 시 함께 포함시킬 패키지 목록 (구형 방식) |
overrides | 특정 패키지의 하위 버전 강제 고정 (npm 8+ 이상 지원) |
| 필드 | 설명 |
|---|---|
type | 모듈 방식 지정 ("module" 또는 "commonjs") |
| 필드 | 설명 |
|---|---|
module | ESM 전용 진입점 경로 (import 사용 시 참조됨) |
sideEffects | 트리 셰이킹에서 제외할 부작용 있는 파일 지정 (false 또는 배열) |
browser | 브라우저 환경에서 대체할 모듈 경로 지정 (Webpack용) |
| 필드 | 설명 |
|---|---|
engines | 허용 Node.js/npm 버전 범위 지정 |
private | true 설정 시 publish 금지 (내부 전용 프로젝트) |
| 필드 | 설명 |
|---|---|
os / cpu | 특정 OS 또는 CPU 아키텍처에서만 동작하도록 제한 |
workspaces | 모노레포 하위 프로젝트 지정 (yarn/npm monorepo용) |