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 )
Array of glob patterns for files and directories to ignore globally.
A configuration object with the ignore patterns. The glob patterns to ignore.
How It Works
The globalIgnores helper creates a configuration object that:
Applies ignore patterns globally (not tied to specific file patterns)
Ensures proper formatting of glob patterns
Makes intent clear in configuration files
Manual Equivalent
These two configurations are equivalent:
const { globalIgnores } = require ( "eslint/config" );
module . exports = [
globalIgnores ([ "node_modules/**" , "dist/**" ])
];
module . exports = [
{
ignores: [ "node_modules/**" , "dist/**" ]
}
];
The helper version is more explicit about intent.
Examples
Basic Ignores
Project Structure
Monorepo
With Negation
const { globalIgnores } = require ( "eslint/config" );
module . exports = [
globalIgnores ([
"node_modules/**" ,
"dist/**" ,
"*.config.js"
]),
{
rules: {
"no-console" : "error" ,
"no-unused-vars" : "error"
}
}
];
const { globalIgnores , defineConfig } = require ( "eslint/config" );
module . exports = defineConfig ([
// Ignore build artifacts and dependencies
globalIgnores ([
"**/node_modules/**" ,
"**/dist/**" ,
"**/build/**" ,
"**/.next/**" ,
"**/out/**"
]),
// Main configuration
{
languageOptions: {
ecmaVersion: 2024 ,
sourceType: "module"
},
rules: {
"no-console" : "warn"
}
},
// Source files
{
files: [ "src/**/*.js" ],
rules: {
"no-unused-vars" : "error"
}
}
]);
const { globalIgnores } = require ( "eslint/config" );
module . exports = [
// Ignore common directories in monorepo
globalIgnores ([
"**/node_modules/**" ,
"**/dist/**" ,
"**/build/**" ,
"**/.turbo/**" ,
"**/coverage/**" ,
"**/.cache/**" ,
// Ignore generated files
"**/*.generated.ts" ,
"**/graphql-types.ts"
]),
{
files: [ "packages/*/src/**/*.ts" ],
rules: {
"@typescript-eslint/no-explicit-any" : "error"
}
}
];
const { globalIgnores } = require ( "eslint/config" );
module . exports = [
// Ignore everything in temp, except important.js
globalIgnores ([
"temp/**" ,
"!temp/important.js"
]),
{
files: [ "**/*.js" ],
rules: {
"no-console" : "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:
Flat Config (New)
eslintrc (Legacy)
const { globalIgnores } = require ( "eslint/config" );
module . exports = [
globalIgnores ([ "node_modules/**" , "dist/**" ])
];
{
"ignorePatterns" : [ "node_modules/" , "dist/" ]
}