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 업데이트를 참조하세요.

--filter <package_selector>#

필터링에 대해 자세히 알아보세요.