pnpm link
是使用pnpm
一定要掌握的命令之一,如果你都从来没了解过link
这个功能,请速来面壁思过。
pnpm link 命令介绍
根据参数可以分为三类:
pnpm link <dir>
<dir>
是一个本地目录的路径,指代的是想要添加npm
包软链接的项目。
这个命令的逻辑是在<dir>
的node_modules
文件夹中创建一个符号链接,指向当前目录(本地npm
包)。这样就可以在开发过程中直接引用该本地包。
举个例子,你有一个正在开发的npm
包your-pack
,位置位于~/projects/your-pack
,你在这个目录系执行命令pnpm link ~/project/test-project
,最终的结构就是:
└── projects
├── your-pack
└── test-project
└── node_modules
├── your-pack
└── others ...
pnpm link --global
这个命令会将当前工作目录下的npm
包链接到全局,以便能够在任何项目中引入。
完成这一步配置后,就需要搭配pnpm link --global <pkg>
把npm
包链接到项目。
此外,如果这个npm
包设置了bin
字段,那这个包的二进制文件也会变成全局可用的执行命令。
pnpm link --global <pkg>
<pkg>
表示你要添加到npm
包名称,该命令会在当前项目的 node_modules
文件夹中创建一个符号链接,指向全局已安装的 <pkg>
包。
pnpm unlink
取消某个npm
包在全局范围内的链接(与 pnpm link
命令的功能相反)。
如果不指定参数的话,所有已经链接的依赖项都将被切断链接。
此命令与 yarn unlink
类似,但 pnpm
会在删除外部链接后重新安装此依赖项。
注意:如果你想删除某个全局的包,请使用pnpm uninstall --global <package>
命令,pnpm unlink
的作用仅仅是移除当前目录下的软链接依赖。
实战
your-pack
用本地包替换已安装的这种场景主要发生在开发或者调试npm
包的情况下。
假设我们的项目里安装了一个your-pack
包,现在我们想要给your-pack
添加一些功能并测试,那应该怎么做呢?
简单来说就是使用pnpm link
把本地的your-pack
软链接到你的项目中。
# 进入到npm包中
cd ~/project/your-pack
# 安装依赖
pnpm install
# 把本地npm包设置为全局
pnpm link --global
# 进入项目中
cd ~/project/my-project
# 用本地替换已安装的your-pack
pnpm link --global your-pack
还有一种选择是不通过全局方式链接,直接软链接。
cd ~/project/your-pack
pnpm install
cd ~/project/my-project
# 直接用软链接your-pack替换
pnpm link ~/project/your-pack
测试 & 开发命令行工具
假设你正在开发一个命令行工具,执行pnpm link --global
就可以把命令变成全局可用,这样很方便测试命令。
注意,不要忘了在package.json
中定义bin
字段,不然会找不到命令。
cd ~/project/hello
pnpm install
pnpm link --global
版权声明:本文为原创文章,版权归 neo 所有。
本文链接:https://idayer.com/pnpm-link-npm/
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。
0 条评论