@graphql-inspector/cli
    TypeScript icon, indicating that this package has built-in type declarations

    2.6.1 • Public • Published

    GraphQL Inspector

    npm version

    GraphQL Inspector ouputs 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 programatic API, so you can use it however you want to and even build tools on top of it.

    Installation

    # CLI
    yarn add @graphql-inspector/cli
    
    # Core API for programatic usage
    yarn add @graphql-inspector/core

    Compare schemas

    Compares schemas and finds breaking or dangerous changes.

    CLI:

    $ graphql-inspector diff OLD_SCHEMA NEW_SCHEMA
    

    API:

    import {diff, Change} 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 {validate, InvalidDocument} from '@graphql-inspector/core';
    
    const invalid: InvalidDocument[] = validate(documentsGlob, schema);

    Validate

    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
    yarn global add @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

    Install

    npm i @graphql-inspector/cli

    DownloadsWeekly Downloads

    50,586

    Version

    2.6.1

    License

    MIT

    Unpacked Size

    588 kB

    Total Files

    10

    Last publish

    Collaborators

    • avatar
    • avatar