{"id":47899,"library":"graphql-lint-unused-fields","title":"graphql-lint-unused-fields","description":"Terminal and pipeline tool for detecting unused fields in GraphQL queries across JavaScript/TypeScript projects. Current stable version: 1.6.18. Released as part of a monorepo with extensions. Supports traditional `gql`/`graphql` template literals, React JSX, hooks, destructuring, cross-file analysis, alias mapping, and configurable pipelines. CLI and programmatic API available. Output formats include console, JSON, and ESLint. Requires Node >=16.0.0. Open source core with optional extensions.","status":"active","version":"1.6.18","language":"javascript","source_language":"en","source_url":"https://github.com/Regenerating-World/graphql-lint-unused-fields","tags":["javascript","graphql","lint","unused","fields","analyzer","typescript"],"install":[{"cmd":"npm install graphql-lint-unused-fields","lang":"bash","label":"npm"},{"cmd":"yarn add graphql-lint-unused-fields","lang":"bash","label":"yarn"},{"cmd":"pnpm add graphql-lint-unused-fields","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"Default export is not provided; use named import. ESM only.","wrong":"const UnusedFieldsLinter = require('graphql-lint-unused-fields')","symbol":"UnusedFieldsLinter","correct":"import { UnusedFieldsLinter } from 'graphql-lint-unused-fields'"},{"note":"CommonJS require works with named exports. Do not call require without destructuring.","wrong":"const UnusedFieldsLinter = require('graphql-lint-unused-fields')","symbol":"UnusedFieldsLinter (CommonJS)","correct":"const { UnusedFieldsLinter } = require('graphql-lint-unused-fields')"},{"note":"Use import type for type-only imports to avoid runtime overhead.","wrong":"import { UnusedFieldsLinter, LinterConfig, LinterResult } from 'graphql-lint-unused-fields'","symbol":"TypeScript types","correct":"import type { UnusedFieldsLinter, LinterConfig, LinterResult } from 'graphql-lint-unused-fields'"}],"quickstart":{"code":"import { UnusedFieldsLinter } from 'graphql-lint-unused-fields';\n\nasync function main() {\n  const linter = new UnusedFieldsLinter();\n  const result = await linter.analyze('./src', {\n    include: ['src/**/*.{ts,tsx,js,jsx}'],\n    exclude: ['node_modules/**', '**/*.test.*'],\n    advanced: true,\n    maxFiles: 1000\n  });\n  console.log(`Unused fields: ${result.unusedFields.length}`);\n  for (const field of result.unusedFields) {\n    console.log(`${field.fieldName} in ${field.filePath}:${field.line}`);\n  }\n}\n\nmain().catch(console.error);","lang":"typescript","description":"Programmatic usage: create linter instance, analyze project, output unused fields."},"warnings":[{"fix":"Always pass a directory path, e.g., './src' instead of './src/index.ts'.","message":"UnusedFieldsLinter.analyze() expects a directory path, not a file path. Passing a single file will skip analysis.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Ensure your include patterns match your project file extensions, e.g., ['src/**/*.{ts,tsx}'].","message":"The tool only analyzes files matching include patterns; if no files match, result.unusedFields will be empty.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Review reported unused fields manually or add them to an ignore list in configuration.","message":"Field usage detection relies on static analysis; dynamic field references (e.g., computed keys) may not be detected, leading to false positives.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Use 'npx graphql-lint-unused-fields /project --format console,json' instead.","message":"The CLI subcommand 'graphql-lint-pipeline' is deprecated in favor of direct 'graphql-lint-unused-fields' usage with --format flag.","severity":"deprecated","affected_versions":">=1.5.0"}],"env_vars":null,"search_vec":"'1.6.18':23 '16.0.0':65 'across':17 'alia':46 'analysi':45 'analyz':77 'api':54 'avail':55 'cli':51 'configur':49 'consol':59 'core':68 'cross':43 'cross-fil':42 'current':20 'destructur':41 'detect':11 'eslint':62 'extens':31,71 'field':5,13,76 'file':44 'format':57 'gql':34 'graphql':2,15,35,73 'graphql-lint-unused-field':1 'hook':40 'includ':58 'javascript':72 'javascript/typescript':18 'json':60 'jsx':39 'lint':3,74 'liter':37 'map':47 'monorepo':29 'node':64 'open':66 'option':70 'output':56 'part':26 'pipelin':8,50 'programmat':53 'project':19 'queri':16 'react':38 'releas':24 'requir':63 'sourc':67 'stabl':21 'support':32 'templat':36 'termin':6 'tool':9 'tradit':33 'typescript':78 'unus':4,12,75 'version':22","created_at":"2026-06-07T16:53:53.718425+00:00","updated_at":"2026-06-07T16:53:53.718425+00:00","problems":[{"fix":"Run 'npm install graphql-lint-unused-fields' in your project root.","cause":"Package not installed or not in node_modules.","error":"Cannot find module 'graphql-lint-unused-fields'"},{"fix":"Use 'const { UnusedFieldsLinter } = require('graphql-lint-unused-fields');'","cause":"CommonJS require was used without destructuring, importing the module object itself.","error":"TypeError: graphql_lint_unused_fields_1.UnusedFieldsLinter is not a constructor"},{"fix":"Check your configuration's include array and ensure the project directory contains matching files.","cause":"The include patterns are too restrictive or the project path is incorrect.","error":"Error: No files found matching include patterns"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/Regenerating-World/graphql-lint-unused-fields#readme","github":"https://github.com/Regenerating-World/graphql-lint-unused-fields","docs":null,"changelog":null,"pypi":null,"npm":"graphql-lint-unused-fields","openapi_spec":null,"status_page":null,"smithery":null,"categories":["devops"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}