pnpm patch <pkg>
패칭을 위한 패키지를 준비합니다(Yarn의 유사한 명령에서 영감을 받음).
이 명령은 마음대로 편집할 수 있도록 임시 디렉토리에 패키지를 추출합니다.
변경을 마쳤으면 pnpm patch-commit <path>을 실행하여(<path>은 전달받은 임시 디렉터리) 패치 파일을 생성하고 patchedDependencies 필드를 통해 최상위 매니페스트에 등록하세요.
사용법:
pnpm patch <pkg name>@<version>
참고
패키지의 종속성을 변경하려는 경우, 패치를 사용하여 패키지의 package.json 파일을 수정하지 마세요. 종속성을 재정의하려면 overrides 또는 package hook을 사용하세요.
옵션#
--edit-dir <dir>#
패치가 필요한 패키지는 이 디렉터리로 추출됩니다.
--ignore-existing#
패치할 때 기존에 존재하는 패치 파일을 무시합니다.
환경설정#
patchedDependencies#
이 필드는 pnpm patch-commit을 실행하면 자동으로 추가/업데이트됩니다. 다음과 같은 딕셔너리를 사용하여 종속성에 대한 패치를 정의합니다:
- 키: 정확한 버전, 버전 범위가 포함된 패키지 이름 또는 이름만.
- 값: 패치 파일의 상대 경로.
예시:
patchedDependencies:
express@4.18.1: patches/express@4.18.1.patch
종속성은 버전 범위로 패치할 수 있습니다. 우선순위는 다음과 같습니다:
- 정확한 버전(가장 높은 우선순위)
- 버전 범위
- 이름만 지정한 패치(재정의하지 않는 한 모든 버전에 적용됨)
특수한 경우: 버전 범위 *는 이름만 지정한 패치처럼 동작하지만 패치 실패를 무시하지 않습니다.
예시:
patchedDependencies:
foo: patches/foo-1.patch
foo@^2.0.0: patches/foo-2.patch
foo@2.1.0: patches/foo-3.patch
patches/foo-3.patch는foo@2.1.0에 적용됩니다.patches/foo-2.patch는2.1.0을 제외하고^2.0.0과 일치하는 모든 foo 버전에 적용됩니다.patches/foo-1.patch는 나머지 모든 foo 버전에 적용됩니다.
겹치는 버전 범위는 피하세요. 하위 범위를 특수하게 처리해야 한다면 더 넓은 범위에서 명시적으로 제외하세요.
예시:
patchedDependencies:
# Specialized sub-range
"foo@2.2.0-2.8.0": patches/foo.2.2.0-2.8.0.patch
# General patch, excluding the sub-range above
"foo@>=2.0.0 <2.2.0 || >2.8.0": patches/foo.gte2.patch
대부분의 경우 정확한 버전을 정의하는 것만으로 더 넓은 범위를 재정의하기에 충분합니다.
allowUnusedPatches#
추가된 버전: v10.7.0(이전 이름: allowNonAppliedPatches)
- 기본값: false
- 유형: Boolean
true이면 patchedDependencies 필드의 일부 패치가 적용되지 않더라도 설치가 실패하지 않습니다.
patchedDependencies:
express@4.18.1: patches/express@4.18.1.patch
allowUnusedPatches: true
ignorePatchFailures#
추가된 버전: v10.7.0
- 기본값: undefined
- 유형: Boolean, undefined
패치 실패를 처리하는 방식을 제어합니다.
동작:
- undefined(기본값):
- 정확한 버전 또는 버전 범위가 지정된 패치가 실패하면 오류를 발생시킵니다.
- 이름만 지정한 패치의 실패는 무시합니다.
- false: 모든 패치 실패에 대해 오류를 발생시킵니다.
- true: 패치를 적용할 수 없을 때 실패하는 대신 경고를 출력합니다.