升级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
相关产品推荐
相关产品推荐

