A TypeScript ESLint ruleset designed for large teams and projects
—
Patch utilities provide essential functionality for ESLint configuration resolution and extended features. These utilities modify ESLint's behavior at runtime and must be required before your ESLint configuration is loaded.
Required patch that fixes ESLint module resolution issues for proper compatibility with the ruleset. This patch must be required at the top of your .eslintrc.js file before any other configuration.
// Required at the top of .eslintrc.js
require('@rushstack/eslint-config/patch/modern-module-resolution');
module.exports = {
extends: ["@rushstack/eslint-config/profile/node"],
parserOptions: { tsconfigRootDir: __dirname }
};Path: @rushstack/eslint-config/patch/modern-module-resolution
Status: Required for all configurations
Behavior: Side-effect only (no exports)
Purpose: Patches ESLint's module resolution to support modern dependency resolution patterns
This patch:
Optional patch that enables ESLint bulk suppression functionality, allowing you to suppress multiple ESLint violations across your codebase using configuration files rather than inline comments.
// Optional - require at the top of .eslintrc.js if needed
require('@rushstack/eslint-config/patch/eslint-bulk-suppressions');
module.exports = {
extends: ["@rushstack/eslint-config/profile/node"],
parserOptions: { tsconfigRootDir: __dirname }
};Path: @rushstack/eslint-config/patch/eslint-bulk-suppressions
Status: Optional
Behavior: Side-effect only (no exports)
Purpose: Enables bulk suppression of ESLint rules via external configuration
Features:
Flat Configuration Support:
// For flat config users
import '@rushstack/eslint-config/flat/patch/eslint-bulk-suppressions';
export default [
// ... your configuration
];Flat Path: @rushstack/eslint-config/flat/patch/eslint-bulk-suppressions
Optional patch that enables support for custom ESLint configuration package naming patterns, useful for organizations with specific naming conventions for their ESLint configurations.
// Optional - require at the top of .eslintrc.js if needed
require('@rushstack/eslint-config/patch/custom-config-package-names');
module.exports = {
extends: ["@rushstack/eslint-config/profile/node"],
parserOptions: { tsconfigRootDir: __dirname }
};Path: @rushstack/eslint-config/patch/custom-config-package-names
Status: Optional
Behavior: Side-effect only (no exports)
Purpose: Supports custom naming patterns for ESLint configuration packages
Implementation: Internally requires @rushstack/eslint-patch/custom-config-package-names
Features:
Every project using @rushstack/eslint-config must include the modern-module-resolution patch:
// .eslintrc.js
require('@rushstack/eslint-config/patch/modern-module-resolution');
module.exports = {
extends: ["@rushstack/eslint-config/profile/node"],
parserOptions: { tsconfigRootDir: __dirname }
};For projects that need to manage ESLint violations incrementally:
// .eslintrc.js
require('@rushstack/eslint-config/patch/modern-module-resolution');
require('@rushstack/eslint-config/patch/eslint-bulk-suppressions');
module.exports = {
extends: ["@rushstack/eslint-config/profile/node"],
parserOptions: { tsconfigRootDir: __dirname }
};You can combine multiple patches as needed:
// .eslintrc.js
require('@rushstack/eslint-config/patch/modern-module-resolution');
require('@rushstack/eslint-config/patch/eslint-bulk-suppressions');
require('@rushstack/eslint-config/patch/custom-config-package-names');
module.exports = {
extends: ["@rushstack/eslint-config/profile/node"],
parserOptions: { tsconfigRootDir: __dirname }
};For ESLint 9+ flat configuration, use ES6 imports:
// eslint.config.js
import '@rushstack/eslint-config/flat/patch/eslint-bulk-suppressions';
import nodeProfile from "@rushstack/eslint-config/flat/profile/node";
export default [
...nodeProfile
];// DEPRECATED - throws error with migration instructions
require('@rushstack/eslint-config/patch-eslint6');Status: Deprecated - throws error
Replacement: Use patch/modern-module-resolution instead
Error Message: Directs users to use the modern-module-resolution patch
// Patch modules are require-only with side effects
// No direct exports - they modify ESLint's runtime behavior
// Internal patch interface (not exported)
interface PatchBehavior {
// Patches modify global ESLint behavior through side effects
// No return values or exports
readonly sideEffectsOnly: true;
}Modern Module Resolution:
ESLint Bulk Suppressions:
Custom Config Package Names:
Common Issues:
modern-module-resolution patch is required firstpatch/ not just filename)Correct Patch Order:
// ✅ Correct order
require('@rushstack/eslint-config/patch/modern-module-resolution');
require('@rushstack/eslint-config/patch/eslint-bulk-suppressions');
module.exports = {
// ... configuration
};
// ❌ Incorrect - patches after configuration
module.exports = {
// ... configuration
};
require('@rushstack/eslint-config/patch/modern-module-resolution');Install with Tessl CLI
npx tessl i tessl/npm-rushstack--eslint-config