Skip to main content
The globalIgnores helper simplifies the creation of global ignore patterns in ESLint flat configuration files. It ensures ignore patterns are properly formatted and apply globally to all files.

Import

const { globalIgnores } = require("eslint/config");

// or ES modules
import { globalIgnores } from "eslint/config";

Usage

Basic Usage

const { globalIgnores } = require("eslint/config");

module.exports = [
  globalIgnores(["node_modules/**", "dist/**", "build/**"]),
  {
    rules: {
      "no-console": "error"
    }
  }
];

Common Ignore Patterns

const { globalIgnores } = require("eslint/config");

module.exports = [
  globalIgnores([
    // Dependencies
    "node_modules/**",
    
    // Build outputs
    "dist/**",
    "build/**",
    "out/**",
    
    // Coverage reports
    "coverage/**",
    
    // IDE files
    ".vscode/**",
    ".idea/**",
    
    // Cache directories
    ".cache/**",
    ".eslintcache"
  ]),
  
  // Your ESLint config
  {
    rules: {
      "no-unused-vars": "error"
    }
  }
];

Function Signature

function globalIgnores(patterns)
patterns
string[]
required
Array of glob patterns for files and directories to ignore globally.
config
object
A configuration object with the ignore patterns.

How It Works

The globalIgnores helper creates a configuration object that:
  1. Applies ignore patterns globally (not tied to specific file patterns)
  2. Ensures proper formatting of glob patterns
  3. Makes intent clear in configuration files

Manual Equivalent

These two configurations are equivalent:
const { globalIgnores } = require("eslint/config");

module.exports = [
  globalIgnores(["node_modules/**", "dist/**"])
];
The helper version is more explicit about intent.

Examples

const { globalIgnores } = require("eslint/config");

module.exports = [
  globalIgnores([
    "node_modules/**",
    "dist/**",
    "*.config.js"
  ]),
  
  {
    rules: {
      "no-console": "error",
      "no-unused-vars": "error"
    }
  }
];

Pattern Syntax

The globalIgnores helper accepts glob patterns using minimatch syntax:

Wildcards

  • * - Matches any characters except /
  • ** - Matches any characters including / (recursive)
  • ? - Matches a single character except /

Examples

globalIgnores([
  "*.log",           // All .log files in root
  "**/*.log",        // All .log files anywhere
  "temp/**",         // Everything in temp directory
  "build/**/test",   // test directories under build
  "!important.log"   // Negation: don't ignore this file
])

Best Practices

Place at the Beginning

Always place globalIgnores() at the start of your config array:
module.exports = [
  // Global ignores first
  globalIgnores(["node_modules/**", "dist/**"]),
  
  // Then your configs
  { /* ... */ }
];

Use Consistent Patterns

Be consistent with trailing slashes for directories:
// Good: explicit directory patterns
globalIgnores([
  "node_modules/**",
  "dist/**",
  "build/**"
])

// Avoid: mixing patterns
globalIgnores([
  "node_modules",  // unclear if file or directory
  "dist/**"
])

Combine with .gitignore

Keep your ignore patterns similar to .gitignore:
// .gitignore
/*
node_modules/
dist/
coverage/
.env.local
*/

// eslint.config.js
globalIgnores([
  "node_modules/**",
  "dist/**",
  "coverage/**",
  ".env.local"
])

Don’t Ignore Config Files

Be careful not to ignore your ESLint config:
// Good: specific ignore patterns
globalIgnores([
  "*.min.js",
  "!eslint.config.js"
])

// Bad: might ignore config
globalIgnores([
  "*.js"  // This would ignore eslint.config.js!
])

Differences from Legacy Config

In eslintrc, ignores were specified differently:
const { globalIgnores } = require("eslint/config");

module.exports = [
  globalIgnores(["node_modules/**", "dist/**"])
];