JSPM

@graphql-inspector/cli

5.0.9-alpha-20250303231809-a9e18e316dadf96215e61b924ea30c5d04bcac39
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 140373
  • Score
    100M100P100Q163729F
  • License MIT

Tooling for GraphQL. Compare GraphQL Schemas, check documents, find breaking changes, find similar types.

Package Exports

    Readme

    GraphQL Inspector

    npm version

    GraphQL Inspector outputs a list of changes between two GraphQL schemas. Every change is precisely explained and marked as breaking, non-breaking or dangerous. It helps you validate documents and fragments against a schema and even find similar or duplicated types.

    Example

    Features

    Major features:

    • Compares schemas
    • Finds breaking or dangerous changes
    • Validates documents against a schema
    • Finds similar / duplicated types
    • Schema coverage based on documents
    • Serves a GraphQL server with faked data and GraphQL Playground
    • GitHub Bot
    • GitHub Actions

    GraphQL Inspector has a CLI and also a programmatic API, so you can use it however you want to and even build tools on top of it.

    Installation

    # CLI
    pnpm add @graphql-inspector/cli
    
    # Core API for programmatic usage
    pnpm add @graphql-inspector/core

    Compare schemas

    Compares schemas and finds breaking or dangerous changes.

    CLI:

    $ graphql-inspector diff OLD_SCHEMA NEW_SCHEMA

    API:

    import { Change, diff } from '@graphql-inspector/core'
    
    const changes: Change[] = diff(schemaA, schemaB)

    Diff

    Find similar types

    Finds similar / duplicated types.

    CLI:

    $ graphql-inspector similar SCHEMA

    API:

    import { similar, SimilarMap } from '@graphql-inspector/core'
    
    const similar: SimilarMap = similar(schema, typename, threshold)

    Similar

    Check coverage

    Schema coverage based on documents. Find out how many times types and fields are used in your application.

    CLI:

    $ graphql-inspector coverage DOCUMENTS SCHEMA

    API:

    import { coverage, SchemaCoverage } from '@graphql-inspector/core'
    
    const schemaCoverage: SchemaCoverage = coverage(schema, documents)

    Coverage

    Validate documents

    Validates documents against a schema and looks for deprecated usage.

    CLI:

    $ graphql-inspector validate DOCUMENTS SCHEMA

    API:

    import { InvalidDocument, validate } from '@graphql-inspector/core'
    
    const invalid: InvalidDocument[] = validate(documentsGlob, schema)

    Validate

    Audit documents

    Audit your documents for useful metrics such as query depth, directive count and alias count.

    CLI:

    $ graphql-inspector audit DOCUMENTS

    API:

    Not available

    $ pnpm graphql-inspector audit "packages/**/*.graphql|packages/**/*.ts(x)"
    
    Maximum depth is 16
    Maximum alias amount is 3
    Maximum directive amount is 6
    $ pnpm graphql-inspector audit "packages/**/*.graphql|packages/**/*.ts(x)" --detail
    
    ┌────────────────┬───────┬─────────┬────────────┐
    │ Operation Name │ Depth │ Aliases │ Directives │
    ├────────────────┼───────┼─────────┼────────────┤
    │ getFoo         │ 1     │ 2       │ 6          │
    ├────────────────┼───────┼─────────┼────────────┤
    │ getBar         │ 16    │ 3       │ 0          │
    └────────────────┴───────┴─────────┴────────────┘
    
    Maximum depth is 16
    Maximum alias amount is 3
    Maximum directive amount is 6

    Serve faked GraphQL API

    Serves a GraphQL server with faked data and GraphQL Playground

    CLI:

    $ graphql-inspector serve SCHEMA
    ✅ Serving the GraphQL API on http://localhost:4000/

    Introspect GraphQL server

    Introspects a GraphQL Server and writes the result to a file

    CLI:

    $ graphql-inspector introspect SCHEMA --write schema.json
    ✅ Introspection result saved to schema.json

    GitHub Bot and GitHub Actions

    Have a per-repository, self-hosted GraphQL Inspector service or deploy it with Docker.

    # install
    pnpm add --global @graphql-inspector/actions
    # use
    
    $ graphql-inspector-github
    {
      "name": "app",
      "scripts": {
        "precommit": "graphql-inspector introspect schema.js --write schema.graphql && git add schema.graphql"
      },
      "graphql-inspector": {
        "diff": true,
        "schema": {
          "ref": "master",
          "path": "schema.graphql"
        }
      }
    }

    Get GitHub annotations in your PRs.

    GitHub

    CLI in more details

    SCHEMA

    Path to a CommonJS or ES Module that exports an object

    Example:

    graphql-inspector coverage ./src/schema.js

    Example with TypeScript:

    graphql-inspector coverage ./src/schema.ts --require ts-node/register
    // String
    export default `
      type Query {
        hello: String
      }
    `
    
    // GraphQLSchema
    export default makeExecutableSchema({...});
    
    // GraphQL Document
    export default gql`
      type Query {
        hello: String
      }
    `
    
    // IntrospectionQuery result
    export default {
      data: {
        __schema: {
          ...
        }
      }
    }

    Pointer to a Git repository

    Example:

    graphql-inspector diff git:origin/master:schema.graphql

    Pattern:

    git:ref:path/to/file

    Pointer to a GitHub repository

    Example:

    graphql-inspector coverage github:kamilkisiela/graphql-inspector-example#master:schema.graphql

    Pattern:

    github:owner/name#ref:path/to/file

    GraphQL File

    Example:

    graphql-inspector coverage schema.graphql
    graphql-inspector coverage schema.gql

    JSON File

    Example:

    graphql-inspector coverage introspected-schema.json

    URL to a GraphQL endpoint

    Example:

    graphql-inspector coverage https://localhost:3000/graphql

    DOCUMENTS

    Glob pattern

    Example:

    graphql-inspector validate ./src/**/*.{js,jsx,tsx,graphql} https://localhost:3000/graphql

    Supports TypeScript, JavaScript and GraphQL Files (Extensions: ts,tsx,js,jsx,graphql,gql,graphqls).

    Help

    Find out what the CLI is capable of:

    graphql-inspector --help
    graphql-inspector similar --help

    License

    MIT © Kamil Kisiela