😸
importの順をESLintプラグインで管理しよう
importの順をキレイにしよう
このような雑なimportの順を、プラグインの力を借りて整理しましよう
import { useContext } from 'react';
import classes from './Cart.module.css';
import Modal from '../UI/Modal';
import CartItem from './CartItem';
import CartContext from '../../store/cart-context';
まずはeslint-plugin-import
をインストール
npm i -D eslint-plugin-import
設定ファイルにインポートします
.eslintrc
{
...
"plugins": ["import"],
}
ここからおすすめのimportの順を紹介します
react関連のモジュール
(行を置く)
ライブラリーのモジュール
(行を置く)
共通のUIコンポーネントのモジュール
(行を置く)
コンポーネントのモジュール
(行を置く)
CSS、画像などのモジュール
(行を置く)
テスト関連のモジュール
各モジュールグループの中の順はアルファベット順で決めます
そして、Named importの置き方もアルファベット順で並びましょう
import { A, B, C, D } from './Sample';
次はrules
を書きます
.eslintrc
{
...
"rules": {
...
"sort-imports": [
"error",
{ "ignoreCase": true, "ignoreDeclarationSort": true }
],
"import/order": [
"error",
{
"groups": [
"builtin",
"external",
"internal",
["sibling", "parent"],
"object"
],
"pathGroups": [
{
"pattern": "react",
"group": "builtin",
"position": "before"
},
{
"pattern": ".*/UI/**",
"group": "internal",
"position": "before"
},
{
"pattern": "./*.module.css",
"group": "index",
"position": "after"
}
],
"newlines-between": "always",
"alphabetize": {
"order": "asc",
"caseInsensitive": true
}
}
]
}
}
上の例をもう一度順序を並ぶとこうなります
import { useContext } from 'react';
import Modal from '../UI/Modal';
import CartContext from '../../store/cart-context';
import CartItem from './CartItem';
import classes from './Cart.module.css';
pattern
を書くときの参考資料
Discussion