Skip to content

import Patch from "/snippets/cli/patch.mdx";

bun patch 을 사용하면 node_modules 를 유지 관리 가능하고 git 친화적인 방식으로 영구적으로 패치할 수 있습니다.

가끔 버그를 수정하거나 기능을 추가하기 위해 node_modules/ 의 패키지에 작은 변경을 가해야 할 때가 있습니다. bun patch 을 사용하면 전체 패키지를 벤더링하지 않고도 이를 쉽게 수행할 수 있으며 여러 설치, 여러 프로젝트 및 여러 머신에서 패치를 재사용할 수 있습니다.

기능:

  • 설치 시 node_modules 의 의존성에 적용되는 .patch 파일 생성
  • .patch 파일은 저장소에 커밋할 수 있으며 여러 설치, 프로젝트 및 머신에서 재사용 가능
  • package.json"patchedDependencies" 가 패치된 패키지를 추적
  • bun patch 을 사용하면 Bun 의 전역 캐시 무결성을 유지하면서 node_modules/ 의 패키지를 패치할 수 있습니다
  • bun patch --commit <pkg> 로 커밋하기 전에 로컬에서 변경 사항 테스트
  • 디스크 공간을 절약하고 bun install 을 빠르게 유지하기 위해 패치된 패키지는 가능한 경우 전역 캐시에 커밋되고 프로젝트 간에 공유됩니다

1 단계: 패치를 위해 패키지 준비

시작하려면 bun patch <pkg> 를 사용하여 패치를 위해 패키지를 준비합니다.

bash
# 패키지 이름 제공
bun patch react
# ...여러 버전이 설치된 경우 정확한 버전 제공
bun patch react@17.0.2
# 또는 패키지 경로 제공
bun patch node_modules/react

참고

bun patch <pkg> 를 호출하는 것을 잊지 마세요! 이는 node_modules/ 의 패키지 폴더에 Bun 의 캐시에 대한 심볼릭 링크/하드링크가 없는 새 복사본이 포함되어 있는지 확인합니다. 이 작업을 잊으면 전역 캐시에서 패키지를 편집하게 될 수 있습니다!

2 단계: 로컬에서 변경 사항 테스트

bun patch <pkg> 는 Bun 의 전역 캐시 무결성을 유지하면서 node_modules/<pkg> 를 직접 편집하는 것을 안전하게 만듭니다. 이는 전역 캐시의 원래 패키지와 비교하여 node_modules/ 에 패키지의 링크되지 않은 복제본을 다시 생성하여 작동합니다.

3 단계: 변경 사항 커밋

변경 사항이 만족스러우면 bun patch --commit <path or pkg> 를 실행합니다.

Bun 은 patches/ 에 패치 파일을 생성하고 package.json 과 lockfile 을 업데이트하며 Bun 은 패치된 패키지를 사용하기 시작합니다.

bash
# 패치된 패키지 경로 제공
bun patch --commit node_modules/react

# ...또는 패키지 이름과 선택적으로 버전 제공
bun patch --commit react@17.0.2

# 패치 파일을 저장할 디렉토리 선택
bun patch --commit react --patches-dir=mypatches

# `patch-commit` 은 pnpm 과의 호환성을 위해 사용 가능합니다
bun patch-commit react

Bun by www.bunjs.com.cn 편집