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

如何解决pnpm filter命令执行单个嵌套工作区build脚本报错问题?

解决pnpm过滤执行build脚本报错"No projects matched the filters"的问题

我正在使用一个基于pnpm的仓库,此前用过npm和yarn工作区,但对pnpm不熟悉。仓库的工作区包都在packages目录下的子层级中,我需要对packages/starter/example目录下的包执行build脚本。参考pnpm过滤文档后,我执行了以下命令:

pnpm --filter packages/starter/example run build

但命令执行失败,报错信息如下:

pnpm --filter packages/starter/example run build
No projects matched the filters in "/home/me/myproject"

我已经确认目录路径正确,该目录下的文件列表为:

$ ls packages/starter/example/
CHANGELOG.md  LICENSE  README.md  next-env.d.ts  next.config.js  node_modules  package.json  public  src  tsconfig.json

解决方案

1. 检查根目录的pnpm-workspace.yaml配置

pnpm需要通过pnpm-workspace.yaml识别工作区中的包。打开根目录的这个文件,确认其中的packages数组包含packages/starter/example或匹配它的通配符规则,比如:

packages:
  - 'packages/**' # 匹配packages下所有子目录的包
  # 或者明确指定
  - 'packages/starter/example'

如果该路径不在配置中,pnpm会将其视为工作区外的目录,导致过滤匹配失败。

2. 使用包名代替路径过滤

查看packages/starter/example/package.json中的name字段(例如可能是@solana/wallet-adapter-example),直接用包名作为过滤条件:

pnpm --filter @solana/wallet-adapter-example run build

pnpm的过滤功能优先识别包名,这种方式比路径匹配更可靠,尤其是在嵌套工作区结构中。

3. 调整路径过滤的语法

尝试给路径加上相对前缀./,或者用引号包裹路径避免shell解析问题:

pnpm --filter ./packages/starter/example run build
# 或者用引号
pnpm --filter "packages/starter/example" run build

部分环境下,不加相对前缀的路径可能无法被pnpm正确识别为工作区内的包路径。

4. 更新pnpm到最新稳定版

不同版本的pnpm过滤语法可能存在差异,升级到最新版本可以避免一些兼容性问题:

pnpm add -g pnpm@latest

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:25:25