You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何直接从GitHub将自有monorepo作为package.json依赖引入?

解决方案

该需求可以通过yarn classic原生支持的git子包路径语法+依赖别名实现,无需将包发布到npm registry。

正确配置语法

你需要在git地址的tag/提交哈希后,加冒号拼接子包在monorepo中的相对路径,示例如下:

"dependencies": {
  "@my-module/client": "https://github.com/username/my-module.git#v0.0.12:packages/client",
  "@my-module/server": "https://github.com/username/my-module.git#v0.0.12:packages/server"
}

语法说明

  • #v0.0.12 指定仓库的版本标签,也可以替换为具体的提交哈希
  • 冒号后的packages/client是子包在monorepo仓库中的相对路径,需要确保该路径下存在独立的package.json文件
  • 左侧的包名可以直接写你需要的scoped包名(如@my-module/client),yarn会将路径下的子包识别为对应名称的依赖,和从npm registry拉取的行为完全一致

错误写法原因

  • 直接将仓库地址赋值给scoped包名:yarn会将整个仓库作为依赖内容安装,不会自动定位到子包目录,因此无法正常引用
  • 在git url后直接拼接子路径:git协议本身不支持直接拉取仓库下的子目录作为独立仓库地址,因此会提示路径无效

额外说明

  • 该语法同时支持HTTPS和SSH格式的git地址,例如SSH写法为:git@github.com:username/my-module.git#v0.0.12:packages/client
  • 子包自身的依赖会被yarn正常解析安装,无需额外配置

内容的提问来源于stack exchange,提问作者LongHike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 23:45:03