Pre-configured rule sets optimized for modern ESLint flat config format, supporting different file types and Ember patterns with specialized handling for .gjs/.gts template files.
Import the modern configuration object with all presets and utilities.
/**
* Modern ESLint flat config export
* @module eslint-plugin-ember/recommended
*/
import eslintPluginEmber from 'eslint-plugin-ember/recommended';
interface ModernConfig {
/** Re-export of the main plugin */
plugin: ESLintPlugin;
/** ember-eslint-parser for template syntax */
parser: ESLintParser;
/** Base configuration for .js/.ts files */
base: FlatConfig;
/** Configuration for .gjs files */
gjs: FlatConfig;
/** Configuration for .gts files */
gts: FlatConfig;
/** Grouped configurations object */
configs: {
base: FlatConfig;
gjs: FlatConfig;
gts: FlatConfig;
};
}Usage Example:
import eslintPluginEmber from 'eslint-plugin-ember/recommended';
export default [
eslintPluginEmber.base,
eslintPluginEmber.gjs,
eslintPluginEmber.gts,
];Standard configuration for JavaScript and TypeScript files in Ember applications.
/**
* Base flat config for .js/.ts files
*/
interface BaseFlatConfig {
/** Configuration identifier */
name: 'ember:base';
/** File patterns to match */
files: ['**/*.{js,ts}'];
/** Plugin registration */
plugins: {
ember: ESLintPlugin;
};
/** Rule configuration with recommended settings */
rules: Record<string, ESLintRuleConfig>;
}Usage Example:
import eslintPluginEmber from 'eslint-plugin-ember/recommended';
export default [
eslintPluginEmber.base,
{
// Override specific rules
rules: {
'ember/no-jquery': 'warn'
}
}
];Specialized configuration for .gjs files (Glimmer JavaScript files with template syntax).
/**
* Configuration for .gjs files with template support
*/
interface GJSFlatConfig {
/** Configuration identifier */
name: 'ember:gjs';
/** Plugin registration */
plugins: {
ember: ESLintPlugin;
};
/** File patterns for .gjs files */
files: ['**/*.gjs'];
/** Language configuration */
languageOptions: {
/** ember-eslint-parser for template syntax */
parser: ESLintParser;
/** Parser configuration */
parserOptions: {
ecmaFeatures: { modules: true };
ecmaVersion: 'latest';
};
};
/** Processor for template handling */
processor: 'ember/noop';
/** Combined base rules + GJS-specific rules */
rules: Record<string, ESLintRuleConfig>;
}Usage Example:
import eslintPluginEmber from 'eslint-plugin-ember/recommended';
export default [
eslintPluginEmber.base, // For .js/.ts files
eslintPluginEmber.gjs, // For .gjs files
];Specialized configuration for .gts files (Glimmer TypeScript files with template syntax).
/**
* Configuration for .gts files with TypeScript and template support
*/
interface GTSFlatConfig {
/** Configuration identifier */
name: 'ember:gts';
/** Plugin registration */
plugins: {
ember: ESLintPlugin;
};
/** File patterns for .gts files */
files: ['**/*.gts'];
/** Language configuration */
languageOptions: {
/** ember-eslint-parser for template and TypeScript syntax */
parser: ESLintParser;
/** Parser configuration for TypeScript */
parserOptions: {
extraFileExtensions: ['.gts'];
};
};
/** Processor for template handling */
processor: 'ember/noop';
/** Combined base rules + GTS-specific rules */
rules: Record<string, ESLintRuleConfig>;
}Usage Example:
import eslintPluginEmber from 'eslint-plugin-ember/recommended';
export default [
eslintPluginEmber.base, // For .js/.ts files
eslintPluginEmber.gts, // For .gts files
];Full configuration combining all file type support.
/**
* Complete modern configuration setup
* Combines base, GJS, and GTS configurations
*/
type CompleteFlatConfig = [BaseFlatConfig, GJSFlatConfig, GTSFlatConfig];Usage Example:
import eslintPluginEmber from 'eslint-plugin-ember/recommended';
export default [
// Complete Ember configuration
eslintPluginEmber.base,
eslintPluginEmber.gjs,
eslintPluginEmber.gts,
// Custom overrides
{
files: ['**/*.{js,ts,gjs,gts}'],
rules: {
'ember/no-replace-test-comments': 'error',
'ember/no-jquery': 'warn'
}
}
];Direct access to parser and plugin for custom configurations.
/**
* Direct access to parser and plugin components
*/
interface ComponentAccess {
/** Main eslint-plugin-ember plugin object */
plugin: ESLintPlugin;
/** ember-eslint-parser for .gjs/.gts files */
parser: ESLintParser;
}Usage Example:
import eslintPluginEmber from 'eslint-plugin-ember/recommended';
export default [
{
files: ['**/*.js'],
plugins: {
ember: eslintPluginEmber.plugin
},
rules: {
'ember/no-actions-hash': 'error'
}
},
{
files: ['**/*.gjs'],
languageOptions: {
parser: eslintPluginEmber.parser
},
plugins: {
ember: eslintPluginEmber.plugin
},
processor: 'ember/noop'
}
];Access configurations through the grouped configs object.
/**
* Grouped configuration access
*/
interface ConfigGroups {
configs: {
/** Base configuration for .js/.ts files */
base: BaseFlatConfig;
/** GJS configuration for .gjs files */
gjs: GJSFlatConfig;
/** GTS configuration for .gts files */
gts: GTSFlatConfig;
};
}Usage Example:
import eslintPluginEmber from 'eslint-plugin-ember/recommended';
export default [
eslintPluginEmber.configs.base,
eslintPluginEmber.configs.gjs,
eslintPluginEmber.configs.gts,
];Modern configuration access through CommonJS require. Note that this returns flat config arrays.
/**
* CommonJS access to modern flat config arrays
* Returns: Array<FlatConfig>
*/
const eslintPluginEmberRecommended: FlatConfig[] = require('eslint-plugin-ember/configs/recommended');Usage Example:
const eslintPluginEmberRecommended = require('eslint-plugin-ember/configs/recommended');
module.exports = [
...eslintPluginEmberRecommended, // Spreads the flat config array
{
// Additional configuration
rules: {
'ember/no-jquery': 'off'
}
}
];Important Note:
The eslint-plugin-ember/configs/* export path returns flat configuration arrays, not configuration objects. For object-based access, use the ESM import:
import eslintPluginEmber from 'eslint-plugin-ember/recommended';
// Access individual configs: eslintPluginEmber.base, eslintPluginEmber.gjs, etc.