Yarn Workspace Monorepo添加本地包为依赖报404如何解决
Yarn Workspace本地包依赖添加解决方案
错误原因说明
你之前执行命令报错的核心原因有两点:
- Yarn Workspace是根据子包
package.json的name字段识别本地工作区包,而非目录名,你还没有给子包配置带@Main前缀的正式包名,Yarn无法识别本地存在@Main/Auth包 - 添加依赖时只写了
Auth简写,没有写完整的带前缀包名,导致Yarn直接去远端公共仓库查找对应包,自然返回404错误
第一步:修正各子包的package.json名称配置
先确保packages目录下所有子包的package.json的name字段都带上你定义的@Main前缀:
packages/Auth/package.json配置示例:
{ "name": "@Main/Auth", "version": "1.0.0", // 其余你的原有配置 }
packages/Site1/package.json配置示例:
{ "name": "@Main/Site1", "version": "1.0.0", // 其余你的原有配置 }
packages/Site2/package.json同理,name字段设为@Main/Site2
你根目录的package.json配置无需修改,原有配置是符合要求的。
第二步:执行正确的依赖添加命令
添加依赖时需要写完整的本地包名,同时加上@*指定匹配本地工作区版本,避免Yarn去远端仓库拉取:
# 给@Main/Site1添加@Main/Auth依赖 yarn workspace @Main/Site1 add @Main/Auth@* # 给@Main/Site2添加@Main/Auth依赖 yarn workspace @Main/Site2 add @Main/Auth@*
可选手动配置方案
你也可以直接手动修改Site1、Site2的package.json,在dependencies字段下添加对应配置:
"dependencies": { "@Main/Auth": "workspace:*", // 其余你的原有依赖 }
修改完成后在根目录执行yarn install即可生效,workspace:*是Yarn Workspace专用的版本标识,会优先匹配本地工作区的对应包。
内容的提问来源于stack exchange,提问作者lazzy_ms
相关产品推荐
相关产品推荐

