Node.js package.json과 의존성
dependencies vs devDependencies vs peerDependencies
Last updated
dependencies vs devDependencies vs peerDependencies
Last updated
패키지에 관한 정보와 의존중인 버전에 관한 정보를 가진 파일
위는 제 repository 중 하나를 예시로 가져왔습니다.
필드 설명(기본적으로는 모두 선택값)
name
패키지를 게시한다면 필수값
프로젝트의 이름
version
패키지를 게시한다면 필수값
description
프로젝트 설명
npm 검색에서 활용
keywords
프로젝트 키워드
npm 검색에서 활용
homepage
프로젝트 homepage 링크
bugs
이슈 보고할 링크와 메일 정보
license
패키지의 사용 범위를 설명하는 라이센스 표기(ex. MIT, UNLICENSED = 미공개 원할 시)
기여자 정보
1명: author
2명이상: contributors
funding
자금 지원 방법에 대한 링크
files
파일이 종속성으로 설치될 때(.gitignore의 패턴을 따른다, 기본값은 *)
main
기본 진입점인 모듈(기본값은 root폴더의 index.js)
browser
모듈을 client에서 사용하는 경우
bin
패키지 설치 맵(전역의 bin에 없으면 로컬의 bin으로 링크됩니다)
man
man 프로그램이 찾을 수 있도록 지정
directories
bin, doc, lib, man을 패키지 구성으로 사용할 수 있는 필드(CommonJS 스펙)
repository
코드 위치 링크
scripts
라이프 사이클 스크립트(pre*, post*)
npm은 prepare
, prepublish
, prepublishOnly
, prepack
, postpack
, dependencies
yarn v2+는 prepack
, postpack
, prepublish
, postintall
config
지속되는 매개변수
dependencies
의존하고 있는 패키지 목록
devDependencies
개발에서만 의존하는 패키지 목록
peerDependencies
사용하는 것은 아니지만 의존하는 패키지의 목록
npm v6에서는 경고 npm v7부터는 오류 발생 시켜 설치 불가
bundleDependencies
번들로 묶을 패키지 목록
optionalDependencies
종속성을 찾을 수 없거나 실패한 경우 설치 실패 우회
engines
동작가능한 Node 버전 지정 가능(실행기반 설정)
os
운영체제 설정
cpu
특정 CPU 사용 설정
private
publish를 허용할지 여부
publishConfig
publish에서 사용한 매개변수
workspaces
yarn, npm v7+
패키지의 path를 추가하면 링크된다
라이브러리 버전 고정
라이브러리의 다른 의존성 확인
라이브러리의 다른 의존성 버전 고정
결정된 버전의 파일 다운로드
Resolution/Fetch된 라이브러리를 소스 코드에서 사용할 수 있도록 제공
npm linker
모든 의존성을 node_modules 아래에 하나하나 쓰는 것
pnpm linker
Hard link(alias)를 걸어서 node_modules 밑에 쓰다가 있으면 추가 설치 안하는 것
PnP(Plug and Play) linker
npm or yarn PnP 모드
Javascript Map 객체로 의존성 관리(.pnp.cjs 파일)
프로덕션 혹은 런타임에서 사용
개발 종속성일 경우에 사용(프로덕션 빌드에 포함안된다)
해당 라이브러리를 사용하게 될 프로젝트에게 특정 버전을 요구하는 것
yarn
은 warning
npm
은 버전에 따라 상이
npm v3에서는 자동 설치
npm v4 ~ v6는 warning
npm v7+ error
이 밖에도 다양한 필드가 있지만 의 설명을 참고해서 알아보았습니다.
- Major.Minor.Patch(ex. 1.1.1)
직접 설정하려면 설치