[前端包管理] 本地开发和调试 npm 包
![[前端包管理] 本地开发和调试 npm 包](https://cdn.hashnode.com/res/hashnode/image/upload/v1748942289244/4601e32c-bac3-4a27-b3c5-dfb4b3948b82.jpeg)
本地开发 npm 包的时候通常都需要 link 来进行调试
对于不同的包管理软件,有不同的方式
一些概念
在当前目录下直接 link,就可以把当前目录下的 npm 包 link 到全局的 node_modules 中;然后在需要使用本地的 npm 包进行调试的目录下,执行 npm link <package-name>,就可以 link 到本地的包进行调试
被 link 的包会被存放到全局的 node_modules 下,具体的路径是 --- {prefix}/lib/node_modules/<package> ;{prefix} 可以用 npm prefix -g 进行查看
同时,一些 bin 的命令行工具也会被 link 到 {prefix}/bin/<bin-name> 中;这里可以通过输出 $PATH 来查看,可以看到我的 node 的全局 bin 就是被 nvm 写入到了 $PATH 中,所以系统是可以找得到的:
/Users/lordmoon/.nvm/versions/node/v16.20.2/bin:
像上面这种使用到 nvm 来管理的,建议 link 的时候直接 link 绝对路径,不然在切换 node 版本的时候,全局的 node_modules 和 bin 路径和 $PATH 都被更新了,容易有异常
另外,由于正常情况下,npm link 是不会修改 package-lock.json 的,所以在 link 之后执行 npm install 是会覆盖 link 的;所以需要先 install 再 link
yarn link
在 yarn 1 和 yarn 3 版本中,link 的使用方式有些不同;yarn 1 是不支持像 npm 那样直接 link 到一个路径文件夹的,yarn 3 是支持的,但是貌似有些问题:

可以看下这些 issues :
https://github.com/yarnpkg/berry/issues/90
https://github.com/yarnpkg/berry/issues/4870
https://github.com/yarnpkg/berry/pull/98
里面还翻到了 yarn 的维护者对于 yarn 3 会修改 package.json 的回复(2025 年 3 月):

![[JS] fetch 不捕获 4xx](https://cdn.hashnode.com/res/hashnode/image/upload/v1752292253648/9db0ffc4-101a-41a9-9484-b3891c2d81b3.png)
![[Node] Mac m 芯片使用 node 14](https://cdn.hashnode.com/res/hashnode/image/upload/v1752243750001/cf2a586a-c5f8-488c-84a7-a3f7068f34b2.jpeg)
![[其他] WSL Interop](https://cdn.hashnode.com/res/hashnode/image/upload/v1752241086475/51441fc0-e5d9-4423-b009-ac9af9a51c04.jpeg)