지원되는 패키지 소스

pnpm은 다양한 소스에서 패키지를 설치하는 것을 지원합니다. 이러한 소스는 신뢰할 수 있는 소스와 특이한 소스의 두 가지 범주로 나뉩니다.

특이한 소스(Git 저장소나 직접 tarball URL 등)는 전이 종속성에서 사용될 때 공급망 위험을 초래할 수 있습니다. blockExoticSubdeps를 true로 설정하면 전이 종속성이 특이한 소스를 사용하지 못하도록 막을 수 있습니다.

신뢰할 수 있는 소스#

신뢰할 수 있는 소스는 직접 종속성과 전이 종속성 모두에 안전한 것으로 간주됩니다.

npm 레지스트리#

pnpm add package-name은 기본적으로 npm 레지스트리에서 package-name의 최신 버전을 설치합니다.

워크스페이스에서 실행하는 경우, 명령은 먼저 워크스페이스에 있는 다른 프로젝트가 지정된 패키지를 사용하는지 여부를 확인합니다. 이 경우, 이미 사용된 버전이 설치됩니다.

다음을 통해 패키지를 설치할 수도 있습니다.

  • 태그: pnpm add express@nightly
  • 버전: pnpm add express@1.0.0
  • 버전 범위: pnpm add express@2 react@">=0.1.0 <0.2.0"

JSR 레지스트리#

버전 10.9.0에서 추가됨

JSR 레지스트리에서 패키지를 설치하려면 jsr: 프로토콜 접두사를 사용하세요:

pnpm add jsr:@hono/hono
pnpm add jsr:@hono/hono@4
pnpm add jsr:@hono/hono@latest

이것은 npm에서 설치하는 것과 동일하게 작동하지만 JSR을 통해 패키지를 확인하도록 pnpm에 지시합니다.

작업 공간#

workspace 내에서 종속성을 추가하고 작업할 때는 linkWorkspacePackages의 설정 여부와 workspace: range protocol의 사용 여부에 따라 구성된 소스에서 패키지가 설치된다는 점에 유의하세요.

로컬 파일 시스템#

로컬 파일 시스템에서 설치하는 방법에는 두 가지가 있습니다.

  1. tarball 파일(.tar, .tar.gz 또는 .tgz)에서
  2. 디렉토리에서 설치

예시:

pnpm add ./package.tar.gz
pnpm add ./some-directory

디렉터리에서 설치하면 현재 프로젝트의 node_modules에 심볼릭 링크가 생성되므로 pnpm link를 실행하는 것과 같습니다.

특이한 소스#

특이한 소스는 개발에 유용하지만 전이 종속성에서 사용될 때 공급망 위험을 초래할 수 있습니다.

원격 tarball#

인수는 "http://" 또는 "https://"로 시작하는 가져올 수 있는 URL이어야 합니다.

예시:

pnpm add https://github.com/indexzero/forever/tarball/v0.5.6

Git 저장소#

pnpm add <git remote url>

호스트된 Git 공급자로부터 패키지를 설치하여 Git으로 복제합니다.

다음을 통해 Git에서 패키지를 설치할 수 있습니다:

  • 기본 브랜치의 최신 커밋:
pnpm add kevva/is-positive
  • Git 커밋 해시:
pnpm add kevva/is-positive#97edff6f525f192a3f83cea1944765f769ae2678
  • Git 브랜치:
pnpm add kevva/is-positive#master
  • 깃 브랜치 참조:
pnpm add zkochan/is-negative#heads/canary
  • 깃 태그:
pnpm add zkochan/is-negative#2.0.1
  • V-접두사가 붙은 Git 태그:
pnpm add andreineculau/npm-publish-git#v0.0.7

시맨틱 버전을 사용하여 Git 저장소로부터 설치#

semver: 매개변수를 사용하여 설치할 버전(범위)을 지정할 수 있습니다. 예시:

  • 엄격한 semver:
pnpm add zkochan/is-negative#semver:1.0.0
  • V-접두사가 붙은 엄격한 semver:
pnpm add andreineculau/npm-publish-git#semver:v0.0.7
  • Semver 범위를 통한 설치:
pnpm add kevva/is-positive#semver:^2.0.0
  • V-접두사가 붙은 semver 버전 범위:
pnpm add andreineculau/npm-publish-git#semver:<=v0.0.7

Git 저장소의 하위 디렉터리에서 설치하기#

path: 매개변수를 사용하여 Git에 호스팅된 모노레포에서 하위 디렉터리만 설치할 수도 있습니다. 예를 들어:

pnpm add RexSkz/test-git-subfolder-fetch#path:/packages/simple-react-app

전체 URL을 통해 Git 저장소에서 설치하기#

더 명시적으로 지정하고 싶거나 다른 Git 호스팅을 사용하는 경우, 전체 Git URL을 작성할 수 있습니다:

# git+ssh
pnpm add git+ssh://git@github.com:zkochan/is-negative.git#2.0.1

# https
pnpm add https://github.com/zkochan/is-negative.git#2.0.1

호스팅 제공자 약어를 사용하여 Git 저장소에서 설치하기#

특정 Git 제공자에 대해 프로토콜 약어 [provider]:를 사용할 수 있습니다:

pnpm add github:zkochan/is-negative
pnpm add bitbucket:pnpmjs/git-resolver
pnpm add gitlab:pnpm/git-resolver

[provider]:를 생략하면 기본값은 github:입니다.

여러 매개변수를 결합하여 Git 저장소에서 설치#

여러 매개변수를 &로 구분하여 결합할 수 있습니다. 이는 모노레포를 포크(fork)한 경우에 유용할 수 있습니다:

pnpm add RexSkz/test-git-subdir-fetch.git#beta\&path:/packages/simple-react-app

beta 브랜치에서 /packages/simple-react-app에 있는 하위 디렉터리만 설치합니다.