MofuMofu2 / react-sandbox

React.js Sandbox
1 stars 0 forks source link

インポート文を自動ソート可能にした #89

Closed MofuMofu2 closed 9 months ago

MofuMofu2 commented 9 months ago

概要

まだあまりわかってないところもあるのでGPTに解説してもらった。

.eslintrc.json ファイル内の import/order ルールに基づいて、インポート文がどのような順番で並ぶかを説明します。

import/order ルールの設定

インポート文の順序

この設定に基づいて、インポート文は以下の順序で並びます:

  1. React関連の外部モジュールreact, @testing-library/** など)
  2. その他の外部モジュールnode_modules からのもの)
  3. インデックスファイルのインポート
  4. TypeScriptの型定義のインポート
  5. {} を使用しないその他のインポート
  6. プロジェクト内のモジュール(カスタムパスやエイリアスを使用)
  7. 同じディレクトリのモジュール

各グループ内では、インポート文はアルファベット順に並べられます。また、external グループ内では react および @testing-library/** が他の外部モジュールより先に配置されます。

参考URL

MofuMofu2 commented 9 months ago

はい、ご提供いただいた .eslintrc.json ファイルの設定に基づいて、インポート文のソートサンプルを示します。このサンプルでは、各種のインポートタイプが混在している状況を想定しています。

未ソートのインポート例

import MyUtil from './MyUtil';
import { MyComponent } from './MyComponent';
import fs from 'fs';
import React from 'react';
import { render } from '@testing-library/react';
import _ from 'lodash';
import type { MyType } from './MyType';
import { MyInternalModule } from 'src/my-internal-module';

ソート後のインポート

eslint-plugin-importimport/order ルールに基づいて、上記のインポート文をソートすると以下のようになります。

// Node.js の組み込みモジュール (builtin)
import fs from 'fs';

// React関連の外部モジュール (external)
import React from 'react';
import { render } from '@testing-library/react';

// その他の外部モジュール (external)
import _ from 'lodash';

// インデックスファイルのインポート (index)
// ※ この例には含まれていません

// TypeScriptの型定義のインポート (type)
import type { MyType } from './MyType';

// {} を使用しないその他のインポート (object)
// ※ この例には含まれていません

// プロジェクト内のモジュール (internal)
import { MyInternalModule } from 'src/my-internal-module';

// 同じディレクトリのモジュール (sibling)
import MyUtil from './MyUtil';
import { MyComponent } from './MyComponent';

この例では、import/order ルールに従って、各グループのインポートが適切な順序に並べ替えられています。また、グループ間には空行が挿入され、グループ内のインポートはアルファベット順に並べられています。


グループ間のソートが入る、という部分は間違い。このルールはOFFにしているため