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

升级Yarn后工作区无法调用根目录二进制文件问题求助

问题:Yarn 3.x工作区无法调用根目录安装的Jest二进制文件

升级到Yarn 3.2.4后出现如下问题:

  • 已在工作区根目录安装Jest,根目录执行yarn test正常,但进入子工作区运行yarn test(脚本为"test":"jest")时,提示Jest未找到
  • 仅在每个子工作区单独安装Jest,或使用yarn run -T jest才能正常执行,不愿指定完整node_modules/.bin路径
  • 当前yarnrc配置:
nodeLinker: node-modules

plugins:
  - path: .yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs
    spec: "@yarnpkg/plugin-workspace-tools"

yarnPath: .yarn/releases/yarn-3.2.4.cjs

解决方案

1. 配置工作区依赖共享

在根目录package.json中添加workspaceDependencies,明确将根目录的Jest暴露给所有子工作区:

{
  "workspaces": {
    "packages": ["packages/*"], // 替换为你的子工作区路径
    "workspaceDependencies": ["jest"]
  }
}

若需要共享所有根目录依赖(不推荐,易引发版本冲突),可改为:

{
  "workspaces": {
    "packages": ["packages/*"],
    "workspaceDependencies": ["*"]
  }
}

2. 使用packageExtensions自动注入依赖

在根目录yarnrc.yml中添加配置,让Yarn自动为子工作区关联根目录的Jest:

packageExtensions:
  "*":
    dependencies:
      jest: "^29.0.0" # 替换为你实际安装的Jest版本

3. 修改子工作区脚本

直接在子工作区的package.json中修改脚本,调用根目录的Jest:

{
  "scripts": {
    "test": "yarn --cwd ../ jest"
  }
}

此方式无需全局配置,适合临时场景。

4. 清理缓存并重新安装

删除所有子工作区及根目录的node_modules,同时删除.yarn/cache目录,然后执行yarn install重新构建依赖,避免残留文件导致的冲突。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:10:54