pnpm link

별칭: ln

로컬 패키지를 현재 프로젝트의 node_modules에 링크합니다.

pnpm link <dir>

옵션#

이 명령을 실행하는 패키지의 node_modules에 <dir> 디렉터리의 패키지를 링크합니다. <dir>는 상대 경로 또는 절대 경로여야 합니다.

예를 들어, ~/projects/foo 안에서 pnpm link ../bar를 실행하면 foo/node_modules/bar에 bar에 대한 링크가 생성됩니다.

v11의 주요 변경 사항

pnpm link는 더 이상 전역 스토어에서 패키지를 확인하지 않습니다. 상대 경로 또는 절대 경로만 허용됩니다(pnpm link foo 대신 pnpm link ./foo를 사용하세요).

pnpm link --global은 제거되었습니다. 로컬 패키지의 bin을 전역으로 등록하려면 대신 pnpm add -g . 명령을 사용하세요.

인수 없이 pnpm link를 실행하는 방식은 제거되었습니다. 항상 명시적인 경로를 전달하세요.

사용 사례#

설치된 패키지를 로컬 버전으로 교체#

foo 패키지를 사용하는 프로젝트가 있다고 가정해 보겠습니다. foo를 변경하고 프로젝트에서 테스트하려고 합니다. 이 경우 pnpm link를 사용하여 foo의 로컬 버전을 프로젝트에 링크할 수 있습니다:

cd ~/projects/foo
pnpm install # install dependencies of foo
cd ~/projects/my-project
pnpm link ~/projects/foo # link foo to my-project

바이너리를 전역으로 추가#

로컬 패키지의 바이너리를 시스템 전체에서 사용할 수 있게 하려면 대신 pnpm add -g . 명령을 사용하세요:

cd ~/projects/foo
pnpm install # install dependencies of foo
pnpm add -g . # register foo's bins globally

bin 필드가 패키지의 package.json에 있는 경우에만 바이너리를 사용할 수 있다는 점을 기억하세요.

pnpm link와 file: 프로토콜 사용의 차이점은 무엇인가요?#

pnpm link를 사용하면 링크된 패키지가 소스 코드에서 심볼릭 링크됩니다. 링크된 패키지의 소스 코드를 수정할 수 있으며, 변경 사항은 프로젝트에 반영됩니다. 이 방법에서는 pnpm이 링크된 패키지의 종속성을 설치하지 않으므로, 소스 코드에서 직접 설치해야 합니다. 이는 링크된 패키지에 특정 패키지 관리자를 사용해야 할 때 유용할 수 있습니다. 예를 들어, 링크된 패키지에는 npm을 사용하고 프로젝트에는 pnpm을 사용하려는 경우입니다.

file: 프로토콜을 dependencies에서 사용하면 링크된 패키지가 프로젝트 node_modules에 하드 링크되며, 링크된 패키지의 소스 코드를 수정할 수 있고, 변경 사항은 프로젝트에 반영됩니다. 이 방법에서는 pnpm이 링크된 패키지의 종속성도 설치하며, 링크된 패키지의 node_modules를 덮어씁니다.

정보

피어 종속성을 다룰 때는 file: 프로토콜을 사용하는 것이 좋습니다. 프로젝트 종속성에서 피어 종속성을 더 잘 확인하여, 링크된 종속성이 메인 프로젝트에 지정된 종속성 버전을 올바르게 사용하도록 보장하므로 더 일관되고 예상 가능한 동작으로 이어집니다.

기능pnpm linkfile: 프로토콜
심볼릭 링크/하드 링크심볼릭 링크하드 링크
소스 코드 수정 사항 반영예예
링크된 패키지의 종속성 설치아니요(수동 설치 필요)예(링크된 패키지의 node_modules 덮어씀)
종속성에 다른 패키지 관리자 사용가능(예를 들어 링크된 패키지에 npm 사용)아니요, pnpm을 사용합니다