Yarn 3.5中如何像npm link一样使用yarn link?
Yarn 3.5 用 yarn link 关联本地库和应用的正确姿势
先说明下,Yarn 3+ 跟老版本的 yarn link 逻辑不一样,不再搞全局注册那套,直接在本地项目里操作就可以。结合你的项目结构(LibA、LibB、独立应用),分两种场景说:
场景1:把单个本地库(比如LibA)挂到应用里
先去LibA的根目录(就是有package.json的那个文件夹),执行:
yarn link这一步是把LibA标记成本地可关联的包,Yarn会在本地缓存里建个关联,不是全局的哈。
再去应用的根目录,执行:
yarn link LibA这里的
LibA必须是你在LibA的package.json里写的name字段值,执行完应用就会直接用本地LibA的代码,不会再拉npm仓库里的版本了。
场景2:处理库之间的依赖(比如LibB要用到本地的LibA)
如果LibB依赖本地的LibA,先按场景1的步骤把LibA link好,然后:
- 去LibB的根目录,执行:
这样LibB就会用本地的LibA,之后再把LibB关联到应用时,应用也会间接用本地的LibA。yarn link LibA
更推荐的Yarn 3+玩法
其实Yarn 3+ 更建议直接用文件路径加依赖,比link更稳定,不容易出问题:
- 在应用根目录加LibA:
这里的yarn add ./path/to/LibA./path/to/LibA是LibA相对于应用的实际路径,比如如果LibA在应用同级目录,就是../LibA。 - 如果LibB要依赖本地LibA,去LibB根目录执行:
执行完package.json里会出现类似yarn add ./path/to/LibA"LibA": "file:../LibA"的依赖,Yarn会自动处理关联,不用手动link。
几个注意点
- 一定要确保LibA、LibB的package.json里的
name字段是对的,link的时候必须用这个名字。 - 修改本地库代码后,应用会自动识别(一般不需要重新link,但开发服务器可能要重启下)。
- 要取消关联的话,在应用或者依赖库的目录执行
yarn unlink LibA就行。
内容的提问来源于stack exchange,提问作者ruddnisrus
相关产品推荐
相关产品推荐

