nx-workspace

作者: nrwl

探索並理解 Nx 工作區。在回答有關工作區、專案或任務的問題時使用。當 nx 命令失敗,或需要在執行任務前檢查可用的目標/配置時,也請使用。範例:「這個工作區有哪些專案?」、「專案 X 是如何配置的?」、「哪些項目依賴函式庫 Y?」、「我可以執行哪些目標?」、「找不到任務的配置」、「除錯 nx 任務失敗」。

npx skills add https://github.com/nrwl/nx-ai-agents-config --skill nx-workspace

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).

# List all projects
nx show projects

# Filter by pattern (glob)
nx show projects --projects "apps/*"
nx show projects --projects "shared-*"

# Filter by tag
nx 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 filters
nx show projects --type lib --withTarget test
nx show projects --affected --exclude="*-e2e"
nx show projects -p "tag:scope:client,packages/*"

# Negate patterns
nx show projects -p '!tag:private'
nx show projects -p '!*-e2e'

# Output as JSON
nx 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.

# Get full project configuration
nx show project my-app --json

# Extract specific parts from the JSON
nx 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 metadata
nx show project my-app --json | jq '{name, root, sourceRoot, projectType, tags}'

Target Information

Targets define what tasks can be run on a project.

# List all targets for a project
nx show project my-app --json | jq '.targets | keys'

# Get full target configuration
nx show project my-app --json | jq '.targets.build'

# Check target executor/command
nx show project my-app --json | jq '.targets.build.executor'
nx show project my-app --json | jq '.targets.build.command'

# View target options
nx 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 target
nx show projects --withTarget serve
nx 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.

# Read the full nx.json
cat nx.json

# Or use jq for specific sections
cat 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 for detailed commands and examples.

Common Exploration Patterns

"What's in this workspace?"

nx show projects
nx show projects --type app
nx show projects --type lib

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

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

"What depends on library Y?"

# Use the project graph to find dependents
nx 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

nx show projects --json

Example output:

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

Common operations:

# Count projects
nx show projects --json | jq 'length'

# Filter by pattern
nx show projects --json | jq '.[] | select(startswith("shared-"))'

# Get affected projects as array
nx show projects --affected --json | jq '.'

Project Details

nx show project my-app --json

Example output:

{
  "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:

# Get target names
nx show project my-app --json | jq '.targets | keys'

# Get specific target config
nx show project my-app --json | jq '.targets.build'

# Get tags
nx show project my-app --json | jq '.tags'

# Get project root
nx show project my-app --json | jq -r '.root'

Project Graph

nx graph --print

Example output:

{
  "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:

# Get all project names from graph
nx graph --print | jq '.graph.nodes | keys'

# Find dependencies of a project
nx graph --print | jq '.graph.dependencies["my-app"]'

# Find projects that depend on a library
nx graph --print | jq '.graph.dependencies | to_entries[] | select(.value[].target == "shared-ui") | .key'

Troubleshooting

"Cannot find configuration for task X:target"

# Check what targets exist on the project
nx show project X --json | jq '.targets | keys'

# Check if any projects have that target
nx show projects --withTarget target

"The workspace is out of sync"

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

相關技能

dv-security
microsoft
在 Dataverse 環境中進行安全角色指派、使用者存取、應用程式使用者、業務單位及管理員自我提升。當使用者想要授予…時使用。
official
rover
apollographql
We need to translate the given English text into Traditional Chinese. The text describes the Apollo Rover CLI tool. We must preserve the name "rover" and any technical terms like GraphQL, federation, supergraph, GraphOS, CI/CD, JSON, etc. Also preserve URLs if any (none here). Do not add any extra commentary or labels. Just translate the text inside <text> tags. The text: "Apollo Rover CLI for managing GraphQL schemas, federation, and local supergraph development. Publish, fetch, and validate subgraph schemas; compose federated supergraphs locally or via GraphOS Includes schema checking (pre-deploy validation), linting, and introspection from running servers rover dev command starts a local Router with automatic schema composition for development workflows Supports CI/CD patterns with check-before-publish validation and JSON output for scripting Requires..." Wait, the source text ends with "Requires" but it's cut off? Actually the user provided: "Apollo Rover CLI for managing GraphQL schemas, federation, and local supergraph development. Publish,
official
gws-forms
Google
讀取和寫入 Google Forms。
react18-legacy-context
github
提供 React 舊版 context API(contextTypes、childContextTypes、getChildContext)到現代 createContext API 的完整遷移模式。使用…
official
competitor-teardown
qu-skills
結構化競爭分析,包含功能矩陣、SWOT、定位圖與使用者體驗審查。涵蓋研究框架、定價比較、評論挖掘與視覺化交付成果。適用於:市場研究、競爭情報、投資人簡報、產品策略、銷售賦能。觸發詞:競爭者分析、競爭分析、競爭者拆解、市場研究、競爭情報、SWOT分析、競爭者比較、市場格局、競爭者審查、競爭...
researchdata-analysismarketing
omni-query
exploreomni
使用 REST API 對 Omni Analytics 的語意層執行查詢、解讀結果,並串聯查詢以進行多步驟分析。每當需要時使用此技能…
official
customer-escalation
anthropic
將升級案件打包給工程、產品或領導層,並附上完整背景資訊。適用於需要工程關注的錯誤,超出一般支援範圍、多個…
official
router-act
vercel
在撰寫或修改涉及預取請求、客戶端路由器導航或區段快取的測試時,請使用此技能。來自 test/lib/router-act.ts 的 createRouterAct 工具可讓您以端對端方式斷言預取和導航回應,而無需綁定於確切的請求數量或協定細節。這就是大多數客戶端路由器相關測試使用此模式的原因。
official