On this page

naming-convention

Require names to follow specified conventions.

✅ The "extends": "plugin:@graphql-eslint/schema-recommended" and "plugin:@graphql-eslint/operations-recommended" property in a configuration file enables this rule.

💡 This rule provides suggestions

  • Category: Schema & Operations
  • Rule name: @graphql-eslint/naming-convention
  • Requires GraphQL Schema: false ℹ️
  • Requires GraphQL Operations: false ℹ️

Require names to follow specified conventions.

Usage Examples

Incorrect

# eslint @graphql-eslint/naming-convention: ['error', { types: 'PascalCase', FieldDefinition: 'camelCase' }]

type user {
  first_name: String!
}

Incorrect

# eslint @graphql-eslint/naming-convention: ['error', { FragmentDefinition: { style: 'PascalCase', forbiddenPatterns: ['/(^fragment)|(fragment$)/i'] } }]

fragment UserFragment on User {
  # ...
}

Incorrect

# eslint @graphql-eslint/naming-convention: ['error', { 'FieldDefinition[parent.name.value=Query]': { forbiddenPatterns: ['/^get/i'] } }]

type Query {
  getUsers: [User!]!
}

Correct

# eslint @graphql-eslint/naming-convention: ['error', { types: 'PascalCase', FieldDefinition: 'camelCase' }]

type User {
  firstName: String
}

Correct

# eslint @graphql-eslint/naming-convention: ['error', { FragmentDefinition: { style: 'PascalCase', forbiddenPatterns: ['/(^fragment)|(fragment$)/i'] } }]

fragment UserFields on User {
  # ...
}

Correct

# eslint @graphql-eslint/naming-convention: ['error', { 'FieldDefinition[parent.name.value=Query]': { forbiddenPatterns: ['/^get/i'] } }]

type Query {
  users: [User!]!
}

Correct

# eslint @graphql-eslint/naming-convention: ['error', { FieldDefinition: { style: 'camelCase', ignorePattern: '^(EAN13|UPC|UK)' } }]

type Product {
  EAN13: String
  UPC: String
  UKFlag: String
}

Correct

# eslint @graphql-eslint/naming-convention: ['error', { 'FieldDefinition[gqlType.name.value=Boolean]': { style: 'camelCase', requiredPattern: '/^(is|has)/' }, 'FieldDefinition[gqlType.gqlType.name.value=Boolean]': { style: 'camelCase', requiredPattern: '/^(is|has)/' } }]

type Product {
  isBackordered: Boolean
  isNew: Boolean!
  hasDiscount: Boolean!
}

Correct

# eslint @graphql-eslint/naming-convention: ['error', { 'FieldDefinition[gqlType.gqlType.name.value=SensitiveSecret]': { style: 'camelCase', requiredPattern: '/SensitiveSecret$/' } }]

scalar SensitiveSecret

type Account {
  accountSensitiveSecret: SensitiveSecret!
}

Correct (Relay fragment convention <module_name>_<property_name>)

# eslint @graphql-eslint/naming-convention: ['error', { FragmentDefinition: { style: 'PascalCase', requiredPattern: '/_(?<camelCase>.+?)$/' } }]

# schema
type User {
  # ...
}
# operations
fragment UserFields_data on User {
  # ...
}

Config Schema

It’s possible to use a selector that starts with allowed ASTNode names which are described below.

Paste or drop code into the editor in ASTExplorer and inspect the generated AST to compose your selector.

Example: pattern property FieldDefinition[parent.name.value=Query] will match only fields for type Query.

The schema defines the following properties:

types

Includes:

  • ObjectTypeDefinition
  • InterfaceTypeDefinition
  • EnumTypeDefinition
  • ScalarTypeDefinition
  • InputObjectTypeDefinition
  • UnionTypeDefinition

The object must be one of the following types:

  • asString
  • asObject

Argument

[!NOTE]

Read more about this kind on spec.graphql.org.

The object must be one of the following types:

  • asString
  • asObject

DirectiveDefinition

[!NOTE]

Read more about this kind on spec.graphql.org.

The object must be one of the following types:

  • asString
  • asObject

EnumTypeDefinition

[!NOTE]

Read more about this kind on spec.graphql.org.

The object must be one of the following types:

  • asString
  • asObject

EnumValueDefinition

[!NOTE]

Read more about this kind on spec.graphql.org.

The object must be one of the following types:

  • asString
  • asObject

FieldDefinition

[!NOTE]

Read more about this kind on spec.graphql.org.

The object must be one of the following types:

  • asString
  • asObject

FragmentDefinition

[!NOTE]

Read more about this kind on spec.graphql.org.

The object must be one of the following types:

  • asString
  • asObject

InputObjectTypeDefinition

[!NOTE]

Read more about this kind on spec.graphql.org.

The object must be one of the following types:

  • asString
  • asObject

InputValueDefinition

[!NOTE]

Read more about this kind on spec.graphql.org.

The object must be one of the following types:

  • asString
  • asObject

InterfaceTypeDefinition

[!NOTE]

Read more about this kind on spec.graphql.org.

The object must be one of the following types:

  • asString
  • asObject

ObjectTypeDefinition

[!NOTE]

Read more about this kind on spec.graphql.org.

The object must be one of the following types:

  • asString
  • asObject

OperationDefinition

[!NOTE]

Read more about this kind on spec.graphql.org.

The object must be one of the following types:

  • asString
  • asObject

ScalarTypeDefinition

[!NOTE]

Read more about this kind on spec.graphql.org.

The object must be one of the following types:

  • asString
  • asObject

UnionTypeDefinition

[!NOTE]

Read more about this kind on spec.graphql.org.

The object must be one of the following types:

  • asString
  • asObject

VariableDefinition

[!NOTE]

Read more about this kind on spec.graphql.org.

The object must be one of the following types:

  • asString
  • asObject

allowLeadingUnderscore (boolean)

Default: false

allowTrailingUnderscore (boolean)

Default: false


Sub Schemas

The schema defines the following additional types:

asString (enum)

One of: camelCase, PascalCase, snake_case, UPPER_CASE

asObject (object)

Properties of the asObject object:

style (enum)

One of: camelCase, PascalCase, snake_case, UPPER_CASE

This element must be one of the following enum values:

  • camelCase
  • PascalCase
  • snake_case
  • UPPER_CASE

prefix (string)

suffix (string)

forbiddenPatterns (array)

Should be of instance of RegEx

The object is an array with all elements of the type object.

The array object has the following properties:

Additional restrictions:

  • Minimum items: 1
  • Unique items: true

requiredPattern (object)

Should be of instance of RegEx

forbiddenPrefixes (array)

[!WARNING]

This option is deprecated and will be removed in the next major release. Use forbiddenPatterns instead.

The object is an array with all elements of the type string.

Additional restrictions:

  • Minimum items: 1
  • Unique items: true

forbiddenSuffixes (array)

[!WARNING]

This option is deprecated and will be removed in the next major release. Use forbiddenPatterns instead.

The object is an array with all elements of the type string.

Additional restrictions:

  • Minimum items: 1
  • Unique items: true

requiredPrefixes (array)

[!WARNING]

This option is deprecated and will be removed in the next major release. Use requiredPattern instead.

The object is an array with all elements of the type string.

Additional restrictions:

  • Minimum items: 1
  • Unique items: true

requiredSuffixes (array)

[!WARNING]

This option is deprecated and will be removed in the next major release. Use requiredPattern instead.

The object is an array with all elements of the type string.

Additional restrictions:

  • Minimum items: 1
  • Unique items: true

ignorePattern (string)

Option to skip validation of some words, e.g. acronyms

Resources