Skip to content

feat: 相対パスインポート (../) 禁止 → @/ エイリアス強制ルールを ESLint に追加する #445

Description

@ryota-murakami

概要

相対パスインポート (../../../ など) を禁止し、@/ エイリアスによるインポートを ESLint ルールで強制する。

背景・モチベーション

相対パスインポートはディレクトリ構造の変更に脆弱で、深いネスト (../../../) になると可読性が著しく低下する。@/ エイリアス(プロジェクトルートへのマッピング)を統一的に使うことで以下のメリットが得られる:

  • ファイル移動時のリファクタリングコストを削減
    • インポートパスの一貫性・可読性向上
      • IDE の自動補完・ジャンプが安定して機能する

提案するルール構成

// eslint.config.js (Flat Config)
import { createImportPlugin } from 'eslint-plugin-import-x' // or eslint-plugin-import

{
  rules: {
    // ../  や ../../ などの相対パスを禁止
    'no-restricted-imports': [
      'error',
      {
        patterns: [
          {
            group: ['..*'],
            message: '相対パスインポート (../) は禁止です。@/ エイリアスを使用してください。',
          },
        ],
      },
    ],

    // import/no-relative-parent-imports でも同様の制約が可能
    // 'import-x/no-relative-parent-imports': 'error',
  },
}

受け入れ条件 (Acceptance Criteria)

  • ../ から始まる相対親ディレクトリインポートを error レベルで報告する ESLint ルールが追加されている
  • - [ ] @/ エイリアスインポートはルールに違反しない
  • - [ ] 同一ディレクトリの ./ インポートはオプションで許可できる(デフォルトは禁止 or 許可を議論)
  • - [ ] ルールの追加に合わせてドキュメント (README) が更新されている
  • - [ ] テストケース(有効・無効なインポート例)が追加されている

参考リンク

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions