查看哪些包被 link 了
全局查看
npm ls -g --link=true
--link=true会列出 全局 symlink 包- 你会看到类似:
/usr/local/lib
└── ui-library -> /Users/xxx/workspace/project/my/nextjs/demo/ui-library
当前项目查看
npm ls --link=true
- 列出 当前项目 node_modules 下的 symlink
- 例如,你在
web-app里执行:
ui-library -> /usr/local/lib/node_modules/ui-library
说明 web-app 的 ui-library 是通过 link 引入的
取消 link
A. 在项目里取消 link
cd web-app
npm unlink ui-library
- 取消项目依赖的 link
- 如果之前通过
npm link引入了全局 symlink,它会断开 - 注意:此操作不会删除全局 symlink
B. 删除全局 link
cd ui-library
npm unlink --no-save
或:
npm unlink -g ui-library
- 解除全局 symlink
- 此时全局 node_modules 下不会再有
ui-library的 link
C. 恢复为普通 npm 包安装(可选)
cd web-app
npm install ui-library
- 会把依赖恢复为普通安装,而不是 symlink
补充小技巧
- 确认 link 路径
ls -l node_modules | grep ui-library
- 可以看到
ui-library -> /path/to/ui-library macOS / Linux 下 symlink 是箭头形式
注意权限
如果之前用过
sudo npm link,全局 link 可能是 root 拥有取消全局 link 也可能需要 sudo
pnpm / yarn
pnpm:
pnpm link --list
pnpm unlink ui-library
- yarn:
yarn link
yarn unlink ui-library
总结
| 操作 | 命令 |
|---|---|
| 查看全局 link | npm ls -g --link=true |
| 查看项目 link | npm ls --link=true |
| 取消项目 link | npm unlink <package> |
| 取消全局 link | npm unlink -g <package> |
| 恢复普通依赖 | npm install <package> |
tip:日常本地开发测试用
npm link就够,正式团队共享还是用 pnpm workspace / file: 或 私有 npm 包 更稳。
