pnpm 系列之link打补丁教程

pnpm link是使用pnpm一定要掌握的命令之一,如果你都从来没了解过link这个功能,请速来面壁思过。

pnpm link 命令介绍

根据参数可以分为三类:

  1. pnpm link <dir>

<dir> 是一个本地目录的路径,指代的是想要添加npm包软链接的项目。

这个命令的逻辑是在<dir>node_modules 文件夹中创建一个符号链接,指向当前目录(本地npm包)。这样就可以在开发过程中直接引用该本地包。

举个例子,你有一个正在开发的npmyour-pack,位置位于~/projects/your-pack,你在这个目录系执行命令pnpm link ~/project/test-project,最终的结构就是:

└── projects
    ├── your-pack
    └── test-project
        └── node_modules
            ├── your-pack
            └── others ...
  1. pnpm link --global

这个命令会将当前工作目录下的npm包链接到全局,以便能够在任何项目中引入。

完成这一步配置后,就需要搭配pnpm link --global <pkg>npm包链接到项目。

此外,如果这个npm包设置了bin字段,那这个包的二进制文件也会变成全局可用的执行命令。

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

0 条评论