pnpm link
별칭: ln
로컬 패키지를 현재 프로젝트의 node_modules에 링크합니다.
pnpm link <dir>
옵션#
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 link | file: 프로토콜 |
|---|---|---|
| 심볼릭 링크/하드 링크 | 심볼릭 링크 | 하드 링크 |
| 소스 코드 수정 사항 반영 | 예 | 예 |
| 링크된 패키지의 종속성 설치 | 아니요(수동 설치 필요) | 예(링크된 패키지의 node_modules 덮어씀) |
| 종속성에 다른 패키지 관리자 사용 | 가능(예를 들어 링크된 패키지에 npm 사용) | 아니요, pnpm을 사용합니다 |