跳到主要内容
pnpm
文档目录

pnpm link

查看英文原文 ↗

别名: ln

将本地包链接到当前项目的 node_modules

pnpm link <dir>

选项

<dir> 目录中的包链接到执行此命令的包所在的 node_modules<dir> 必须是相对或绝对路径。

例如,如果你在 ~/projects/foo 中执行 pnpm link ../bar,则会在 foo/node_modules/bar 创建指向 bar 的链接。

使用场景

用本地版本替换已安装的包

假设你有一个使用 foo 包的项目,你想修改 foo 并在项目中测试这些改动。此时可以用 pnpm linkfoo 的本地版本链接到你的项目:

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

全局添加可执行文件

要让本地包的可执行文件在全系统可用,改用 pnpm add -g .

cd ~/projects/foo
pnpm install # install dependencies of foo
pnpm add -g . # register foo's bins globally

注意,只有当包在其 package.json 中有 bin 字段时,可执行文件才可用。

使用 pnpm link 时,被链接的包以符号链接方式指向其源代码。你可以修改被链接包的源代码,改动会反映到你的项目中。用这种方式,pnpm 不会安装被链接包的依赖,你需要在源代码中手动安装它们。当你必须为被链接包使用特定包管理器时,这会很有用,例如你想对被链接包使用 npm,而对项目使用 pnpm。

dependencies 中使用 file: 协议时,被链接的包以硬链接方式链接到你项目的 node_modules,你可以修改被链接包的源代码,改动会反映到你的项目中。用这种方式,pnpm 还会安装被链接包的依赖,并覆盖被链接包的 node_modules

info

处理对等依赖时,建议使用 file: 协议。它能更好地从项目依赖中解析对等依赖,确保被链接的依赖正确使用主项目中指定的依赖版本,从而带来更一致、更符合预期的行为。

Featurepnpm linkfile: Protocol
符号链接/硬链接Symlink硬链接
反映源代码的修改YesYes
安装被链接包的依赖否(需手动安装)是(覆盖被链接包的 node_modules
为依赖使用不同的包管理器可以(例如对被链接的包使用 npm不可以,它仍会使用 pnpm

本页内容译自pnpm 官方文档(MIT License),如有出入以英文原文为准。