pnpm link
Псевдоніми: ln
Робить поточний локальний пакунок доступним для всієї системи або в іншому місці.
pnpm link <dir|pkg name>
pnpm link
Параметри
pnpm link <dir>
Звʼязує пакунок з теки <dir>
node_modules
пакунка, з якого ви виконуєте цю команду.
Наприклад, якщо ви знаходитесь всередині
~/projects/foo
і виконуєтеpnpm link ../bar
, то посилання на bar буде створено уfoo/node_modules/bar
.
pnpm link
Звʼязує пакунок з місця, де було виконано цю команду, з глобальним node_modules
, тому на нього можна посилатися з іншого пакунка за допомогою pnpm link <pkg>
. Також, якщо пакунок має поле bin
, то двійкові файли пакунка стають доступними для всієї системи.
pnpm link <pkg>
Звʼязує вказаний пакунок (<pkg>
) з глобальної теки node_modules
з node_modules
пакунка, з якого було виконано цю команду.
Приклади використання
Заміна встановленого пакунка на локальну версію
Припустімо, у вас є проєкт, який використовує пакунок foo
. Ви хочете внести зміни в foo
і перевірити їх у своєму проєкті. У цьому сценарії ви можете використовувати pnpm link
, щоб звʼязати локальну версію foo з вашим проєктом.
cd ~/projects/foo
pnpm install # встановлює залежності foo
pnpm link # звʼязує foo глобально
cd ~/projects/my-project
pnpm link foo # звʼязує foo з поточним проєктом
Ви також можете звʼязати пакунок з теки до іншої теки, не використовуючи глобальну теку node_modules
:
cd ~/projects/foo
pnpm install # встановити залежності foo
cd ~/projects/my-project
pnpm link ~/projects/foo # звʼязати foo з my-project
Додавання двійкового файлу глобально
Якщо ви розробляєте пакунок, який містить двійковий файл, наприклад, інструмент CLI, ви можете використати pnpm link
, щоб зробити двійковий файл доступним для всієї системи.
Це те саме, що й використання pnpm install -g foo
, але буде використано локальну версію foo
замість того, щоб завантажувати її з реєстру.
Памʼятайте, що двійковий файл буде доступним, лише якщо пакунок має поле bin
у своєму package.json
.
cd ~/projects/foo
pnpm install # встановити залежності foo
pnpm link # звʼязати foo глобально
Яка різниця між pnpm link
і використанням протоколу file:
?
Коли ви використовуєте pnpm link
, повʼязаний пакунок буде зʼєднано з вихідним кодом. Ви можете змінювати вихідний код повʼязаного пакунка, і ці зміни будуть відображатися у вашому проєкті. За допомогою цього методу pnpm не встановить залежності повʼязаного пакунка, вам доведеться встановити їх вручну у вихідному коді. Це може бути корисно, якщо вам потрібно використовувати певний менеджер пакунків для повʼязаного пакунка, наприклад, якщо ви хочете використовувати npm
для повʼязаного пакунка, а не pnpm для вашого проєкту.
Коли ви використовуєте протокол file:
у dependencies, повʼязаний пакунок жорстко звʼязується з node_modules
вашого проєкту, ви можете змінювати вихідний код повʼязаного пакунка, і ці зміни буде застосовано у вашому проєкті. За допомогою цього методу pnpm також встановить залежності повʼязаного пакунка, перевизначивши node_modules
повʼязаного пакунка.
При роботі з прямими залежностями рекомендується використовувати протокол file:
. Це краще розвʼязує прямі залежності з залежностями проєкту, гарантуючи, що повʼязана залежність правильно використовує версії залежностей, вказані у вашому основному проєкті, що призводить до більш узгодженої та очікуваної поведінки.
Функція | pnpm link | Протокол file: |
---|---|---|
Символічне посилання/Жорстке посилання | Символічне посилання | Жорстке посилання |
Відображає зміни вихідного коду | Так | Так |
Встановлює залежності повʼязаного пакунка | Ні (потрібне встановлення вручну) | Так (замінює node_modules повʼязаного пакунка) |
Використання іншого менеджера пакунків для залежностей | Можливе (наприклад, використання npm для повʼязаних пакунків) | Ні, використовуватиметься pnpm |