使用 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