pnpm link
Псевдоніми: ln
Робить поточний локальний пакунок доступним для всієї системи або в іншому місці.
pnpm link <dir>
pnpm link --global
pnpm link --global <pkg>
Параметри
--dir <dir>, -C
- Default: Current working directory
- Type: Path string
Changes the link location to <dir>
.
pnpm link <dir>
Links package from <dir>
folder to node_modules of package from where you're executing this command or specified via --dir
option.
For example, if you are inside
~/projects/foo
and you executepnpm link --dir ../bar
, thenfoo
will be linked tobar/node_modules/foo
.
pnpm link --global
Links package from location where this command was executed or specified via --dir
option to global node_modules
, so it can be referred from another package with pnpm link --global <pkg>
. Також, якщо пакунок має поле bin
, то двійкові файли пакунка стають доступними для всієї системи.
pnpm link --global <pkg>
Links the specified package (<pkg>
) from global node_modules
to the node_modules
of package from where this command was executed or specified via --dir
option.
Difference between pnpm link <dir>
and pnpm link --dir <dir>
pnpm link <dir>
links the package from <dir>
to the node_modules
of the package where the command was executed. pnpm link --dir <dir>
links the package from the current working directory to <dir>
.
# The current directory is foo
pnpm link ../bar
- foo
- node_modules
- bar -> ../../bar
- bar
# The current directory is bar
pnpm link --dir ../foo
- foo
- node_modules
- bar -> ../../bar
- bar
Приклади використання
Заміна встановленого пакунка на локальну версію
Припустімо, у вас є проєкт, який використовує пакунок foo
. Ви хочете внести зміни в foo
і перевірити їх у своєму проєкті. In this scenario, you can use pnpm link
to link the local version of foo
to your project, while the package.json
won't be modified.
cd ~/projects/foo
pnpm install # install dependencies of foo
pnpm link --global # link foo globally
cd ~/projects/my-project
pnpm link --global foo # link foo to my-project
You can also link a package from a directory to another directory, without using the global node_modules
folder:
cd ~/projects/foo
pnpm install # встановити залежності foo
cd ~/projects/my-project
pnpm link ~/projects/foo # звʼязати foo з my-project
Додавання двійкового файлу глобально
If you are developing a package that has a binary, for example, a CLI tool, you can use pnpm link --global
to make the binary available system-wide. Це те саме, що й використання pnpm install -g foo
, але буде використано локальну версію foo
замість того, щоб завантажувати її з реєстру.
Памʼятайте, що двійковий файл буде доступним, лише якщо пакунок має поле bin
у своє му package.json
.
cd ~/projects/foo
pnpm install # install dependencies of foo
pnpm link --global # link foo globally
Яка різниця між pnpm link
і використанням протоколу file:
?
Коли ви використовуєте pnpm link
, повʼязаний пакунок буде зʼєднано з вихідним кодом. Ви можете змінювати вихідний код повʼязаного пакунка, і ці зміни будуть відображатися у вашому проєкті. За допомогою цього методу pnpm не встановить залежності повʼязаного пакунка, вам доведеться встановити їх вручну у вихідному коді. This may be usefull when you have to use a specific package manager for the linked package, for example, if you want to use npm
for the linked package, but pnpm for your project.
Коли ви використовуєте протокол file:
у dependencies
, повʼязаний пакунок жорстко звʼязується з node_modules
вашого проєкту, ви можете змінювати вихідний код повʼязаного пакунка, і ці зміни буде застосовано у вашому проєкті. За допомогою цього методу pnpm також встановить залежності повʼязаного пакунка, перевизначивши node_modules
повʼязаного пакунка.
При роботі з прямими залежностями рекомендується використовувати протокол file:
. Це краще розвʼязує прямі залежності з залежностями проєкту, гарантуючи, що повʼязана залежність правильно використовує версії залежностей, вказані у вашому основному проєкті, що призводить до більш узгодженої та очікуваної поведінки.
Функція | pnpm link | Протокол file: |
---|---|---|
Символічне посилання/Жорстке посилання | Символічне посилання | Жорстке посилання |
Відображає зміни вихідного коду | Так | Так |
Встановлює залежності повʼязаного пакунка | Ні (потрібне встановлення вручну) | Так (замінює node_modules повʼязаного пакунка) |
Використання іншого менеджера пакунків для залежностей | Можливе (наприклад, використання npm для повʼязаних пакунків) | Ні, використовуватиметься pnpm |