or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

analysis-correctness.mdconfigs.mdenvironment-specific.mdindex.mdmodule-systems.mdpath-resolution.mdstatic-analysis.mdstyle-organization.mdtypescript.md
tile.json

configs.mddocs/

Configuration Presets

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.

Core Configurations

recommended

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']
};

errors

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'
  }
};

warnings

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'
  }
};

Environment-Specific Configurations

typescript

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'
  ]
};

react

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
    }
  }
};

react-native

Configuration optimized for React Native development.

const reactNative: PluginConfig = {
  settings: {
    'import-x/resolver': {
      'react-native': {}
    }
  }
};

electron

Configuration for Electron applications with Node.js and browser contexts.

const electron: PluginConfig = {
  settings: {
    'import-x/core-modules': ['electron']
  }
};

Experimental Configurations

stage-0

Experimental configuration with work-in-progress rules (use with caution).

const stage0: PluginConfig = {
  plugins: ['import-x'],
  rules: {
    'import-x/no-deprecated': 'warn'
  }
};

Using Multiple Configurations

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'
    }]
  }
};

Configuration Types

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';
  };
}