跳到主要内容

pnpm link

别名: ln

使当前本地包可在系统范围内或其他位置访问。

pnpm link <dir|pkg name>
pnpm link

配置项

Links package from <dir> directory to node_modules of package from where you're executing this command.

For example, if you are inside ~/projects/foo and you execute pnpm link ../bar, then a link to bar will be created in foo/node_modules/bar.

Links package from location where this command was executed to global node_modules, so it can be referred from another package with pnpm link <pkg>. 此外,如果软件包具有bin字段,则软件包的二进制文件将在系统范围内可用。

Links the specified package (<pkg>) from global node_modules to the node_modules of package from where this command was executed.

用例

将已安装的软件包替换为本地版本

假设您有一个使用 foo 包的项目。 您想要对 foo 进行更改并在你的项目中测试它们。 In this scenario, you can use pnpm link to link the local version of foo to your project.

cd ~/projects/foo
pnpm install # install dependencies of foo
pnpm link # link foo globally
cd ~/projects/my-project
pnpm link foo # link foo to my-project

You can also link a package from a directory to another directory, without using the global node_modules directory:

cd ~/projects/foo
pnpm install # install dependencies of foo
cd ~/projects/my-project
pnpm link ~/projects/foo # link foo to my-project

全局添加二进制文件

If you are developing a package that has a binary, for example, a CLI tool, you can use pnpm link to make the binary available system-wide. 这与使用 pnpm install -g foo相同,但它将使用 foo 的本地版本,而不是从注册表下载。

请记住,仅当包的 package.json 中有 bin 字段时,二进制文件才可用。

cd ~/projects/foo
pnpm install # install dependencies of foo
pnpm link # link foo globally

当您使用 pnpm link时,链接的包是从源代码进行符号链接的。 您可以修改链接包的源代码,所做的更改将反映在您的项目中。 使用这种方法 pnpm 将不会安装链接包的依赖项,您必须在源代码中手动安装它们。 This may be useful 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.

当您在 dependencies 中使用 file: 协议时,被链接的软件包将硬链接到您的项目的 node_modules 中,您可以修改被链接软件包的源代码,并且这些修改将反映在您的项目中。 使用此方法,pnpm 还会安装链接包的依赖项,覆盖链接包的 node_modules

信息

在处理 peer dependencies(对等依赖) 时,建议使用 file: 协议。 它更好地解决了项目依赖项中的对等依赖项,确保链接的依赖项正确使用主项目中指定的依赖项版本,从而实现更加一致和预期的行为。

功能pnpm linkfile: 协议
符号链接/硬链接符号链接硬链接
反映源代码修改
安装链接包的依赖项否(需要手动安装)是(覆盖链接包的 node_modules
使用不同的包管理器来实现依赖可以(例如,对链接的包使用 npm不可以,它将使用 pnpm