pnpm publish
레지스트리에 패키지를 게시합니다.
pnpm [-r] publish [<tarball|folder>] [--tag <tag>]
[--access <public|restricted>] [options]
참고
버전 v11부터 pnpm publish는 자체적으로 구현되며 더 이상 npm CLI에 위임하지 않습니다. 이제 사라진 기능에 의존하고 있다면 pnpm/pnpm에 이슈를 등록하세요. 해결 방법으로 여전히 pnpm pack && npm publish *.tgz를 실행할 수 있습니다.
워크스페이스 내부에 패키지를 게시할 때, 워크스페이스 루트의 LICENSE 파일은 패키지와 함께 포장됩니다(패키지 에 자체 라이선스가 있는 경우 제외).
게시하기 전에 package.json의 publishConfig 필드를 사용하여 일부 필드를 재정의할 수 있습니다. 또한 publishConfig.directory 을 사용하여 게시된 하위 디렉터리를 커스터마이즈 할 수 있습니다(일반적으로 타사 빌드 도구 사용).
이 명령을 재귀적으로 실행할 때 (pnpm -r publish), pnpm은 버전이 아직 레지스트리에 게시되지 않은 패키지 를 모두 게시합니다.
옵션#
--recursive, -r#
workspace에 있는 모든 패키지를 게시합니다.
--json#
JSON 형식으로 정보를 표시합니다.
--tag <tag>#
지정된 태그가 있는 패키지를 게시합니다. 기본적으로 pnpm publish 는 latest 태그를 갱신합니다.
예시:
# foo 패키지 디렉토리 내부
pnpm publish --tag next
# foo의 다음 버전을 사용하려는 프로젝트에서
pnpm add foo@next
--access <public|restricted>#
게시된 패키지가 공개 또는 제한되어야 하는지 여부를 레지스트리에 알려줍니다.
--no-git-checks#
현재 브랜치가 게시 브랜치인지, 깨끗한 상태인지, 원격과 최신 상태인지 확인하지 않습니다.
--publish-branch <branch>#
- 기본값: master 및 main
- 유형: String
최신 변경 사항을 게시하는 데 사용되는 저장소의 기본 브랜치입니다.
--force#
현재 버전이 이미 레지스트리에 있는 경우에도 패키지를 게시하려고 합니다.
--batch#
추가된 버전: v11.7.0
재귀적으로 게시할 때(pnpm -r publish), 패키지마다 요청을 하나씩 보내는 대신 선택한 모든 패키지를 단일 PUT /-/pnpm/v1/publish 요청으로 레지스트리에 보냅니다.
대상 레지스트리는 일괄 게시 엔드포인트를 구현해야 합니다(pnpr은 구현함); 구현하지 않은 레지스트리는 ERR_PNPM_BATCH_PUBLISH_UNSUPPORTED 오류로 보고됩니다. 일괄 처리는 전부 아니면 전무 방식으로 이루어집니다: 일괄 처리에 포함된 패키지 중 하나라도 유효성 검사에 실패하면 어떤 패키지도 게시되지 않습니다.
--skip-manifest-obfuscation#
추가된 버전: v11.3.0
게시된 매니페스트에서 원래의 packageManager 필드와 게시 라이프사이클 스크립트를 제거하지 않고 그대로 유지합니다. 여전히 pnpm 전용 pnpm 필드는 생략됩니다.
--report-summary#
게시된 패키지 목록을 pnpm-publish-summary.json에 저장합니다. 게시된 패키지 목록을 보고하기 위해 다른 도구를 사용할 때 유용합니다.
다음은 pnpm-publish-summary.json 파일의 예시입니다:
{
"publishedPackages": [
{
"name": "foo",
"version": "1.0.0"
},
{
"name": "bar",
"version": "2.0.0"
}
]
}
--dry-run#
실제로 레지스트리에 게시하는 것을 제외하고 게시가 수행하는 모든 작업을 수행합니다.
--otp#
이중 인증이 필요한 패키지를 게시할 때, 이 옵션은 일회용 암호를 지정할 수 있습니다.
PNPM_CONFIG_OTP 환경 변수를 통해 OTP를 제공할 수도 있습니다:
export PNPM_CONFIG_OTP='<your OTP here>'
pnpm publish --no-git-checks
레지스트리가 OTP를 요청했는데 환경 변수나 --otp 플래그로 제공하지 않은 경우, pnpm이 OTP 코드를 직접 입력하라는 메시지를 표시합니다.
레지스트리가 웹 기반 인증을 요청하면, pnpm은 URL과 함께 스캔 가능한 QR 코드를 출력합니다.
--provenance#
지원되는 클라우드 CI/CD 시스템에서 게시하는 경우, 패키지는 빌드 및 게시된 위치와 공개적으로 연결됩니다.
--filter <package_selector>#
환경설정#
gitChecks, publishBranch 옵션은 pnpm-workspace.yaml 파일에서도 설정할 수 있습니다.
예시:
gitChecks: false
publishBranch: production
라이프사이클 스크립트#
prepublishOnlyprepublishprepackpreparepostpackpublishpostpublish