eslint-plugin-import-alias-ts/README.md
2026-01-30 11:55:50 -08:00

2 KiB

@lilith/eslint-plugin-import-alias

ESLint plugin to enforce @/* import path aliases with automatic fixing.

v1.1.0: Zero-Config Aggressive Mode

Flags ALL ../ parent directory imports and auto-fixes to @/* aliases.

Installation

pnpm add -D @lilith/eslint-plugin-import-alias

Usage

ESLint Flat Config (ESLint 9+)

import importAliasPlugin from '@lilith/eslint-plugin-import-alias';

export default [
  {
    plugins: {
      'import-alias': importAliasPlugin,
    },
    rules: {
      'import-alias/prefer-alias': 'error', // Zero config!
    },
  },
];

Behavior

Flags and auto-fixes:

  • ../entities/user.entity@/entities/user.entity
  • ../storage/storage.service@/storage/storage.service
  • ../../dto/create.dto@/dto/create.dto
  • ../../../config/app.config@/config/app.config

Allows (unchanged):

  • ./local-file - Same directory imports
  • @/entities - Already using @/* alias
  • @features/email/shared - Cross-component imports
  • @lilith/ui-primitives - Published packages

Examples

Before (violations)

import { UserEntity } from '../entities/user.entity';
import { UserService } from '../services/user.service';
import { StorageService } from '../storage/storage.service';
import { CreateUserDto } from '../../dto/create-user.dto';

After (auto-fixed with eslint --fix)

import { UserEntity } from '@/entities/user.entity';
import { UserService } from '@/services/user.service';
import { StorageService } from '@/storage/storage.service';
import { CreateUserDto } from '@/dto/create-user.dto';

Advanced Configuration (Optional)

The plugin works zero-config, but legacy options are available for backward compatibility:

'import-alias/prefer-alias': [
  'error',
  {
    architecturalDirs: ['entities', 'services'], // Ignored in v1.1.0
    multiLevelThreshold: 2, // Ignored in v1.1.0
  },
],

Note: In v1.1.0, all ../ imports are flagged regardless of config.

License

MIT