使用 link 本地调试 npm 包


前言

由于 yalc 不维护并且不支持 pnpm, 所以需要找一个替代方案。

使用场景

  • 本地开发 npm 包,让其他项目本地调试的时候,保持使用者使用方式是正常安装,但实际 link 到了本地的文件
  • 对 npm 做了二次修改的, 但又不想直接在 node_modules 里面改代码的情况
  • 全局性质的 cli 工具包,要做验证的时候, 看 bin 文件是否正常

原理

  • npm link 会在全局的 node_modules 下面,创建一个软链接,指向本地的包
  • npm link <包名> 会在项目的 node_modules 下面,创建一个软链接,指向全局的包
  • npm unlink <包名> 会删除项目的 node_modules 下面的软链接

缺点

  • 会导致 global 的包,看不出来哪些是 link 到本地的, 管理不了被谁消费了
  • 使用者也看不到用过哪些 link 的包
  • 会覆盖全局已经存在的对应的包
  • 直接是软链接,每次修改都会直接映射,没有独立的本地版本概念了

使用流程

  • 先有一个要调试的包
  • 在包的根目录下,执行 pnpm link
  • 在要调试的项目中,执行 pnpm link <包名>
  • 这样就可以在项目中,使用本地的包了
  • 如果要取消 link,执行 pnpm unlink <包名>
  • 如果要取消所有 link,执行 pnpm unlink --all