ESLint Plugin Import X provides 8 predefined configurations that bundle related rules for specific environments and use cases. These configurations provide sensible defaults and can be extended or customized as needed.
The basic configuration with essential import/export rules for most projects.
const recommended: PluginConfig = {
plugins: ['import-x'],
rules: {
'import-x/no-unresolved': 'error',
'import-x/named': 'error',
'import-x/namespace': 'error',
'import-x/default': 'error',
'import-x/export': 'error',
'import-x/no-named-as-default': 'warn',
'import-x/no-named-as-default-member': 'warn',
'import-x/no-duplicates': 'warn'
},
parserOptions: {
sourceType: 'module',
ecmaVersion: 2018
}
};Usage:
module.exports = {
extends: ['plugin:import-x/recommended']
};Configuration with rules set to error level for strict enforcement.
const errors: PluginConfig = {
plugins: ['import-x'],
rules: {
'import-x/no-unresolved': 'error',
'import-x/named': 'error',
'import-x/namespace': 'error',
'import-x/default': 'error',
'import-x/export': 'error'
}
};Configuration with rules set to warning level for gradual adoption.
const warnings: PluginConfig = {
plugins: ['import-x'],
rules: {
'import-x/no-named-as-default': 'warn',
'import-x/no-named-as-default-member': 'warn',
'import-x/no-duplicates': 'warn'
}
};Configuration optimized for TypeScript projects with appropriate extensions and parser settings.
const typescript: PluginConfig = {
settings: {
'import-x/extensions': ['.ts', '.tsx', '.js', '.jsx'],
'import-x/external-module-folders': ['node_modules', 'node_modules/@types'],
'import-x/parsers': {
'@typescript-eslint/parser': ['.ts', '.tsx', '.cts', '.mts']
},
'import-x/resolver': {
node: {
extensions: ['.ts', '.tsx', '.js', '.jsx']
}
}
},
rules: {
'import-x/named': 'off' // TypeScript handles this
}
};Usage:
module.exports = {
extends: [
'plugin:import-x/recommended',
'plugin:import-x/typescript'
]
};Configuration for React projects with JSX support.
const react: PluginConfig = {
settings: {
'import-x/extensions': ['.js', '.jsx', '.ts', '.tsx'],
'import-x/resolver': {
node: {
extensions: ['.js', '.jsx', '.ts', '.tsx']
}
}
},
parserOptions: {
ecmaFeatures: {
jsx: true
}
}
};Configuration optimized for React Native development.
const reactNative: PluginConfig = {
settings: {
'import-x/resolver': {
'react-native': {}
}
}
};Configuration for Electron applications with Node.js and browser contexts.
const electron: PluginConfig = {
settings: {
'import-x/core-modules': ['electron']
}
};Experimental configuration with work-in-progress rules (use with caution).
const stage0: PluginConfig = {
plugins: ['import-x'],
rules: {
'import-x/no-deprecated': 'warn'
}
};Configurations can be combined for complex projects:
module.exports = {
extends: [
'plugin:import-x/recommended',
'plugin:import-x/typescript',
'plugin:import-x/react'
],
// Override specific rules
rules: {
'import-x/order': ['error', {
'groups': ['builtin', 'external', 'internal'],
'newlines-between': 'always'
}]
}
};interface PluginConfig {
plugins?: [PluginName];
settings?: PluginSettings;
rules?: Record<`${PluginName}/${string}`, TSESLint.Linter.RuleEntry>;
parserOptions?: TSESLint.ParserOptions;
env?: Record<string, boolean>;
}
type PluginName = 'import-x';
interface PluginSettings {
'import-x/resolver'?: ImportResolver;
'import-x/extensions'?: readonly FileExtension[];
'import-x/parsers'?: Record<string, readonly FileExtension[]>;
'import-x/core-modules'?: string[];
'import-x/external-module-folders'?: string[];
'import-x/ignore'?: string[];
'import-x/cache'?: {
lifetime?: number | '∞' | 'Infinity';
};
}