Nx Workspace

nrwl/nx/.opencode/skills/nx-workspace

作者 nrwl2989ece2ac76f5507cf8fa3be38d455273b89178无许可证收录于 2026年10月9日更新于 2026年10月9日

Explore and understand Nx workspaces. USE WHEN answering questions about the workspace, projects, or tasks. ALSO USE WHEN an nx command fails or you need to check available targets/configuration before running a task. EXAMPLES: 'What projects are in this workspace?', 'How is project X configured?', 'What depends on library Y?', 'What targets can I run?', 'Cannot find configuration for task', 'debug nx task failure'.

AI 生成的概览

以只读方式探索 Nx 工作区,查看项目、目标、配置与依赖关系。

功能
该技能指导智能体使用 Nx 命令行以只读方式检查 Nx 工作区。内容包括:通过过滤条件列出项目、以 JSON 获取项目的完整解析配置、查看目标及其选项、读取工作区级别的 nx.json 设置,以及查询项目图以了解依赖关系。它还提供任务配置缺失和工作区不同步的排查步骤,并附带一份关于受影响项目的参考文档。
适用场景
适用于回答工作区中有哪些项目、某个项目如何配置、哪些项目依赖某个库,以及可以运行哪些目标等问题。也用于诊断 nx 命令失败,或在运行任务前检查配置。
运行要求
需要一个 Nx 工作区并可使用 nx 命令行(可能需通过 npx、pnpx 或 yarn 调用),以及可选的本地工具如 jq 来处理 JSON 输出。该技能不包含脚本,仅为说明文档,另有一份参考文档。

Nx Workspace Exploration

This skill provides read-only exploration of Nx workspaces. Use it to understand workspace structure, project configuration, available targets, and dependencies.

Keep in mind that you might have to prefix commands with npx/pnpx/yarn if nx isn't installed globally. Check the lockfile to determine the package manager in use.

Listing Projects

Use nx show projects to list projects in the workspace.

The project filtering syntax (-p/--projects) works across many Nx commands including nx run-many, nx release, nx show projects, and more. Filters support explicit names, glob patterns, tag references (e.g. tag:name), directories, and negation (e.g. !project-name).

bash
# List all projectsnx show projects
# Filter by pattern (glob)nx show projects --projects "apps/*"nx show projects --projects "shared-*"
# Filter by tagnx show projects --projects "tag:publishable"nx show projects -p 'tag:publishable,!tag:internal'
# Filter by target (projects that have a specific target)nx show projects --withTarget build
# Combine filtersnx show projects --type lib --withTarget testnx show projects --affected --exclude="*-e2e"nx show projects -p "tag:scope:client,packages/*"
# Negate patternsnx show projects -p '!tag:private'nx show projects -p '!*-e2e'
# Output as JSONnx show projects --json

Project Configuration

Use nx show project <name> --json to get the full resolved configuration for a project.

Important: Do NOT read project.json directly - it only contains partial configuration. The nx show project --json command returns the full resolved config including inferred targets from plugins.

You can read the full project schema at node_modules/nx/schemas/project-schema.json to understand nx project configuration options.

bash
# Get full project configurationnx show project my-app --json
# Extract specific parts from the JSONnx show project my-app --json | jq '.targets'nx show project my-app --json | jq '.targets.build'nx show project my-app --json | jq '.targets | keys'
# Check project metadatanx show project my-app --json | jq '{name, root, sourceRoot, projectType, tags}'

Target Information

Targets define what tasks can be run on a project.

bash
# List all targets for a projectnx show project my-app --json | jq '.targets | keys'
# Get full target configurationnx show project my-app --json | jq '.targets.build'
# Check target executor/commandnx show project my-app --json | jq '.targets.build.executor'nx show project my-app --json | jq '.targets.build.command'
# View target optionsnx show project my-app --json | jq '.targets.build.options'
# Check target inputs/outputs (for caching)nx show project my-app --json | jq '.targets.build.inputs'nx show project my-app --json | jq '.targets.build.outputs'
# Find projects with a specific targetnx show projects --withTarget servenx show projects --withTarget e2e

Workspace Configuration

Read nx.json directly for workspace-level configuration. You can read the full project schema at node_modules/nx/schemas/nx-schema.json to understand nx project configuration options.

bash
# Read the full nx.jsoncat nx.json
# Or use jq for specific sectionscat nx.json | jq '.targetDefaults'cat nx.json | jq '.namedInputs'cat nx.json | jq '.plugins'cat nx.json | jq '.generators'

Key nx.json sections:

  • targetDefaults - Default configuration applied to all targets of a given name
  • namedInputs - Reusable input definitions for caching
  • plugins - Nx plugins and their configuration
  • ...and much more, read the schema or nx.json for details

Affected Projects

If the user is asking about affected projects, read the affected projects reference [blocked] for detailed commands and examples.

Common Exploration Patterns

"What's in this workspace?"

bash
nx show projectsnx show projects --type appnx show projects --type lib

"How do I build/test/lint project X?"

bash
nx show project X --json | jq '.targets | keys'nx show project X --json | jq '.targets.build'

"What depends on library Y?"

bash
# Use the project graph to find dependentsnx graph --print | jq '.graph.dependencies | to_entries[] | select(.value[].target == "Y") | .key'

Programmatic Answers

When processing nx CLI results, use command-line tools to compute the answer programmatically rather than counting or parsing output manually. Always use --json flags to get structured output that can be processed with jq, grep, or other tools you have installed locally.

Listing Projects

bash
nx show projects --json

Example output:

json
["my-app", "my-app-e2e", "shared-ui", "shared-utils", "api"]

Common operations:

bash
# Count projectsnx show projects --json | jq 'length'
# Filter by patternnx show projects --json | jq '.[] | select(startswith("shared-"))'
# Get affected projects as arraynx show projects --affected --json | jq '.'

Project Details

bash
nx show project my-app --json

Example output:

json
{  "root": "apps/my-app",  "name": "my-app",  "sourceRoot": "apps/my-app/src",  "projectType": "application",  "tags": ["type:app", "scope:client"],  "targets": {    "build": {      "executor": "@nx/vite:build",      "options": { "outputPath": "dist/apps/my-app" }    },    "serve": {      "executor": "@nx/vite:dev-server",      "options": { "buildTarget": "my-app:build" }    },    "test": {      "executor": "@nx/vite:test",      "options": {}    }  },  "implicitDependencies": []}

Common operations:

bash
# Get target namesnx show project my-app --json | jq '.targets | keys'
# Get specific target confignx show project my-app --json | jq '.targets.build'
# Get tagsnx show project my-app --json | jq '.tags'
# Get project rootnx show project my-app --json | jq -r '.root'

Project Graph

bash
nx graph --print

Example output:

json
{  "graph": {    "nodes": {      "my-app": {        "name": "my-app",        "type": "app",        "data": { "root": "apps/my-app", "tags": ["type:app"] }      },      "shared-ui": {        "name": "shared-ui",        "type": "lib",        "data": { "root": "libs/shared-ui", "tags": ["type:ui"] }      }    },    "dependencies": {      "my-app": [        { "source": "my-app", "target": "shared-ui", "type": "static" }      ],      "shared-ui": []    }  }}

Common operations:

bash
# Get all project names from graphnx graph --print | jq '.graph.nodes | keys'
# Find dependencies of a projectnx graph --print | jq '.graph.dependencies["my-app"]'
# Find projects that depend on a librarynx graph --print | jq '.graph.dependencies | to_entries[] | select(.value[].target == "shared-ui") | .key'

Troubleshooting

"Cannot find configuration for task X:target"

bash
# Check what targets exist on the projectnx show project X --json | jq '.targets | keys'
# Check if any projects have that targetnx show projects --withTarget target

"The workspace is out of sync"

bash
nx syncnx reset  # if sync doesn't fix stale cache

来源与署名

来源:nrwl/nx位于.opencode/skills/nx-workspace提交2989ece

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架