用途
nx-workspace 是一个用于探索和理解 Nx 工作区的技能,采用只读方式,帮助用户了解工作区结构、项目配置、可用目标(targets)以及项目之间的依赖关系。它适用于回答关于工作区、项目或任务的问题,也适用于 nx 命令执行失败或需要排查工作区同步问题的场景。
主要能力
该技能围绕 Nx CLI 的查询命令展开,主要能力包括:
- 列出工作区中的项目:使用
nx show projects,支持按名称、glob 模式、标签(如tag:name)、目录以及否定模式(如!project-name)进行过滤。 - 按目标过滤项目:使用
--withTarget参数,例如nx show projects --withTarget build。 - 组合过滤条件:例如
nx show projects --type lib --withTarget test、nx show projects --affected --exclude="-e2e"。 - 获取项目完整配置:使用
nx show project <name> --json,该命令返回包含插件推断目标的完整解析配置,而非仅读取project.json中的部分配置。 - 查看目标信息:包括目标名称、执行器/命令、选项、输入/输出(用于缓存)等。
- 读取工作区级配置:直接读取
nx.json,关注targetDefaults、namedInputs、plugins、generators等部分。 - 查询受影响项目:支持
nx show projects --affected。 - 查看项目依赖图:使用
nx graph --print,可获取节点与依赖关系,并查找依赖某库的项目。
使用方式
该技能通过命令行执行 Nx 命令,并建议使用 --json 标志获取结构化输出,再配合 jq、grep 等本地工具进行程序化处理,而非手动计数或解析输出。
如果 nx 未全局安装,可能需要为命令添加 npx、pnpx 或 yarn 前缀,具体取决于锁文件所指示的包管理器。
常用命令示例:
- 列出所有项目:
nx show projects - 按 glob 过滤:
nx show projects --projects "apps/*" - 按标签过滤:
nx show projects --projects "tag:publishable" - 按目标过滤:
nx show projects --withTarget build - 输出 JSON:
nx show projects --json - 获取项目完整配置:
nx show project my-app --json - 提取目标名称:
nx show project my-app --json | jq '.targets | keys' - 查看目标执行器:
nx show project my-app --json | jq '.targets.build.executor' - 查看目标输入/输出:
nx show project my-app --json | jq '.targets.build.inputs' - 读取 nx.json:
cat nx.json - 查看项目图:
nx graph --print - 查找依赖某库的项目:
nx graph --print | jq '.graph.dependencies | to_entries[] | select(.value[].target == "shared-ui") | .key'
适用场景
- 回答“这个工作区里有什么?”:使用
nx show projects、nx show projects --type app、nx show projects --type lib。 - 回答“如何构建/测试/检查项目 X?”:使用
nx show project X --json | jq '.targets | keys'及具体目标配置。 - 回答“什么依赖了库 Y?”:使用项目图查询依赖方。
- 排查 nx 命令失败:检查项目目标是否存在,或工作区是否同步。
- 处理工作区不同步问题:使用
nx sync,若同步无法修复陈旧缓存则使用nx reset。
限制
该技能为只读探索,不涉及修改工作区配置或执行构建、测试等任务。资料中未提供关于收费、价格、平台支持范围或具体效果的信息。使用前需确认 nx 是否全局安装,否则需根据锁文件选择 npx、pnpx 或 yarn 前缀。