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

如何使用Yarn从Monorepo子目录添加指定子包

从Fork的Expo Monorepo单独引入expo-speech子包的正确方法

Yarn 1.x(1.22.19)方案

Yarn 1支持直接通过Git URL指定monorepo子目录,执行以下命令即可安装你修改后的子包:

yarn add github:my-org/expo#main:packages/expo-speech

如果遇到缓存或依赖解析问题,先清缓存再强制安装:

yarn cache clean
yarn add github:my-org/expo#main:packages/expo-speech --force

Yarn 3.x(3.3.1)方案

Yarn 3的语法略有不同,两种可行写法:

  1. 直接指定子路径:
    yarn add "my-org/expo#main/packages/expo-speech"
    
  2. 用subdir参数明确指定:
    yarn add "github:my-org/expo#main?subdir=packages/expo-speech"
    

要是后续需要频繁更新这个包,可以在项目根目录的.yarnrc.yml里加个配置简化命令:

npmScopes:
  my-org:
    npmRegistryServer: "https://github.com"
    npmAlwaysAuth: false

之后直接用别名安装:

yarn add @my-org/expo-speech@github:my-org/expo#main/packages/expo-speech

备选方案:用patch-package绕开Git安装问题

如果上述Git方式都走不通,换个思路:先装官方包,再用补丁应用你的修改:

  1. 安装官方expo-speech:
    yarn add expo-speech
    
  2. 把你fork仓库里packages/expo-speech的修改文件,覆盖到项目的node_modules/expo-speech对应位置
  3. 生成补丁文件:
    npx patch-package expo-speech
    
  4. 把生成的patches/文件夹提交到版本控制,后续yarn install时补丁会自动生效

排查要点

  • 确认你的fork仓库main分支里确实有修改后的packages/expo-speech代码
  • 注意Yarn 1和3的Git子目录语法差异,别搞混了
  • 遇到依赖冲突,直接删node_modules和yarn.lock重装:
    rm -rf node_modules yarn.lock
    yarn install
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:21:00