pnpm update
별칭: up, upgrade
pnpm update 는 지정된 범위를 기반으로 패키지를 최신 버전으로 업데이트합니다.
인수 없이 사용하면, 모든 의존성을 업데이트합니다.
요약#
| 명령어 | 의미 |
|---|---|
pnpm up |
package.json에 지정된 범위를 준수하여, 모든 의존성을 업데이트합니다. |
pnpm up --latest |
모든 종속성을 최신 버전으로 업데이트합니다 |
pnpm up foo@2 |
foo 를 v2의 최신 버전으로 업데이트합니다. |
pnpm up "@babel/*" |
@babel 범위 아래의 모든 의존성을 업데이트합니다. |
업데이트가 기록하는 내용#
pnpm-lock.yaml을 새로 해석된 버전으로 이동하는 것 외에도, pnpm update는 새 범위를 종속성이 선언된 위치에 다시 기록합니다:
package.json에서는, 종속성이 이미 선언한 연산자는 유지한 채 범위가 해석된 버전으로 이동하므로,^1.1.0은 계속 캐럿 범위로 유지됩니다.catalog:프로토콜로 선언된 종속성은package.json에서 다시 쓰이지 않습니다. 대신 가리키는 카탈로그 항목이pnpm-workspace.yaml에서 업데이트됩니다.- 종속성이 dist-tag로 선언된 경우, 예를 들어
"foo": "latest"처럼, 해당 태그를 계속 추적합니다. 태그는package.json에 그대로 유지되고 lockfile만 그 뒤에 있는 버전으로 이동합니다 —--latest를 사용할 때도 마찬가지입니다.
선언된 범위는 그대로 두고 lockfile만 업데이트하려면 --no-save를 전달하세요.
패턴으로 종속성 선택하기#
패턴을 사용하여 특정 의존성을 업데이트할 수 있습니다.
모든 babel 패키지를 업데이트합니다:
pnpm update "@babel/*"
webpack을 제외한 모든 종속성을 업데이트합니다:
pnpm update "\!webpack"
패턴은 함께 사용할 수도 있으므로, 다음 명령은 모든 babel 패키지를 업데이트하되, core는 제외합니다:
pnpm update "@babel/*" "\!@babel/core"
GitHub Actions 업데이트하기#
추가된 버전: v11.16.0
pnpm outdated는 저장소의 워크플로 파일이 참조하는 GitHub Actions의 업데이트를 확인할 수 있으며, pnpm update는 이를 업데이트할 수 있습니다. 이 기능은 모든 명령에서 선택 사항입니다: --include-github-actions를 전달하거나, update.githubActions를 true로 설정하고 pnpm-workspace.yaml에 저장하면 기본적으로 활성화됩니다.
업데이트된 액션은 정확한 커밋 해시로 고정되며, 릴리스 태그는 주석으로 보존됩니다:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
업데이트 확인은 참조된 모든 저장소에 대해 git ls-remote를 실행합니다. 참조를 읽을 수 없는 액션은 — 예를 들어, 비공개 저장소의 액션 — 경고와 함께 건너뜁니다. 액션이 다른 GitHub 서버(GitHub Enterprise Server 등)에 호스팅된 경우, update.githubActionsServer를 설정하세요(v11.17.0에서 추가됨).
옵션#
--recursive, -r#
package.json 이 있는 모든 하위 디렉토리에서 업데이트를 동시에 실행합니다 ( node_modules 제외).
사용 예:
pnpm --recursive update
# 최대 100개의 하위 디렉토리까지 모든 패키지를 업데이트합니다.
pnpm --recursive update --depth 100
# 모든 패키지의 타입스크립트를 최신 버전으로 업데이트합니다.
pnpm --recursive update typescript@latest
--latest, -L#
latest 태그로 결정되는 최신 안정 버전으로 종속성을 업데이트하며(패키지가 메이저 버전을 넘어 업그레이드될 수 있음) package.json에 지정된 버전 범위가 latest 태그보다 낮은 경우에만 적용됩니다(즉, 프리릴리스는 다운그레이드되지 않음).
--global, -g#
글로벌 패키지를 업데이트합니다.
--workspace#
워크스페이스에서 모든 패키지를 연결하려고 시도합니다. 워크스페이스 내 패키지의 버전과 일치하도록 버전이 업데이트됩니다.
특정 패키지가 업데이트된 경우 업데이트된 의존성이 워크스페이스 내에서 발견되지 않으면 명령이 실패합니다. 예를 들어 다음 명령은 express 가 워크스페이스 패키지가 아닌 경우 실패합니다.
pnpm up -r --workspace express
--prod, -P#
dependencies 및 optionalDependencies의 패키지만 업데이트합니다.
--dev, -D#
devDependencies의 패키지만 업데이트합니다.
--no-optional#
optionalDependencies 의 패키지를 업데이트하지 않습니다.
--interactive, -i#
오래된 의존성을 표시하고 업데이트할 의존성을 선택합니다.
버전 v11.21.0부터 --global과 함께 사용하면, 각 격리된 설치 그룹이 하나의 선택 가능한 항목으로 표시됩니다: 전역 설치를 공유하는 패키지는 하나의 단위로 함께 업데이트됩니다.
--no-save#
package.json의 범위를 업데이트하지 않습니다.
--changeset#
추가된 버전: v11.16.0
업데이트가 완료된 후 변경 의도를 — changesets 호환 .changeset/*.md 파일로 — 작성하여 patch 버전 증가는 업데이트로 dependencies 또는 optionalDependencies가 변경된 모든 워크스페이스 패키지에, major 버전 증가는 peerDependencies가 변경된 경우에 선언합니다. catalog: 프로토콜을 통해 업데이트된 카탈로그 항목을 사용하는 패키지도 포함됩니다. 비공개 패키지, 이름이 없는 패키지, 그리고 ignore 배열에 나열된 패키지는 .changeset/config.json 기준으로 건너뜁니다. .changeset/config.json이 없으면, 경고가 출력되고 changeset은 생성되지 않습니다.
update.changeset을 true로 pnpm-workspace.yaml에 설정하면 이 동작이 기본적으로 활성화되며, 한 번의 업데이트에서 설정을 재정의하려면 --no-changeset을 사용하세요.
--include-github-actions#
추가된 버전: v11.16.0
저장소의 워크플로 파일에서 참조하는 GitHub Actions도 업데이트합니다. 자세한 내용은 GitHub Actions 업데이트를 참조하세요.