Перейти до основного змісту
Версія: 8.x

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>.

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 execute pnpm link --dir ../bar, then foo will be linked to bar/node_modules/foo.

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, то двійкові файли пакунка стають доступними для всієї системи.

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.

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, повʼязаний пакунок буде зʼєднано з вихідним кодом. Ви можете змінювати вихідний код повʼязаного пакунка, і ці зміни будуть відображатися у вашому проєкті. За допомогою цього методу 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