Formats GraphQL schema definition language (SDL) document.
npm install format-graphql





Formats GraphQL schema definition language (SDL) document.
---
* Motivation
* Behaviour
* Example
* Usage
* Command Line
* Node API
* Hooks
As schema grows in size, it becomes desirable to automate schema organisation. The primary function of format-graphql is to sort definitions and fields in an alphabetical order, therefore enabling predictable discovery and grouping of related schema entities.
Alphabetically sorts definitions, fields and arguments.
Input:
``graphql
type Query {
bananas: [Banana!]!
apples: [Apple!]!
}
type Apple {
name: String!
id: ID!
}
type Banana {
name: String!
id: ID!
}
`
Output:
`graphql
type Apple {
id: ID!
name: String!
}
type Banana {
id: ID!
name: String!
}
type Query {
apples: [Apple!]!
bananas: [Banana!]!
}
`
`bash
$ format-graphql --help
Sort GraphQL schema definition language (SDL) document.
Positionals:
sdl-path Path to the GraphQL schema definition (SDL) document. [string]
Options:
--version Show version number [boolean]
--help Show help [boolean]
--sort-arguments Sort on arguments [boolean] [default: true]
--sort-definitions Sort on definitions [boolean] [default: true]
--sort-enums Sort on enums [boolean] [default: true]
--sort-fields Sort on fields [boolean] [default: true]
--write Overrides contents of the SDL document.
[boolean] [default: false]
$ # Prints formatted schema.
$ format-graphql ./schema.graphql
$
$ # Overrides target schema.
$ format-graphql --write=true ./schema.graphql
`
formatSdl(schema, options)
Returns a formatted GraphQL SDL String.
#### Parameters
- schema: stringoptions
- (optional): object:
``
{
sortDefinitions?: boolean,
sortEnums?: boolean,
sortFields?: boolean,
sortArguments?: boolean,
}
#### Example
`js
import {formatSdl} from 'format-graphql';
formatGraphql('type Foo { bar: String }');
`
I recommend using husky to setup a pre-commit hook that would format the schema, e.g.
`json
"husky": {
"hooks": {
"pre-commit": "format-graphql --write true src/schema.graphql"
}
},
``