pnpm link
Псевдоніми: ln
Повʼязує локальний пакунок з node_modules поточного проєкту.
pnpm link <dir>...
Використання#
pnpm link <dir>...#
Links the package from each <dir> directory to node_modules of the package from where you're executing this command. <dir> має бути відносним або абсолютним шляхом. A relative path is resolved against the directory you run the command in. Passing a package name, or no argument, fails with ERR_PNPM_LINK_BAD_PARAMS.
Наприклад, якщо ви знаходитесь всередині
~/projects/fooі виконуєтеpnpm link ../bar, то посилання на bar буде створено уfoo/node_modules/bar.
pnpm link writes two entries:
- a
link:dependency inpackage.json, if the package is not declared there yet; - an
overridesentry<name>: link:<path>in the rootpnpm-workspace.yaml, so the link applies throughout the workspace.
pnpm warns about peer dependencies of the linked package. pnpm unlink removes the overrides.
Use cases#
Заміна встановленого пакунка на локальну версію#
Припустімо, у вас є проєкт, який використовує пакунок foo. Ви хочете внести зміни в foo і перевірити їх у своєму проєкті. У цьому сценарії ви можете використовувати pnpm link, щоб звʼязати локальну версію foo з вашим проєктом:
cd ~/projects/foo
pnpm install # встановити залежності foo
cd ~/projects/my-project
pnpm link ~/projects/foo # звʼязати foo з my-project
Додавання двійкового файлу глобально#
Щоб зробити бінарні файли локального пакунка доступними для всієї системи, використовуйте замість цього pnpm add -g .:
cd ~/projects/foo
pnpm install # встановити залежності foo
pnpm add -g . # зареєструвати бінарні файли foo глобально
Памʼятайте, що двійковий файл буде доступним, лише якщо пакунок має поле 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 |