概要
フロントエンド開発をしたら次のようにimport
を使ってたくさんのコンポーネントとライブラリを読んで使う場合があります。
import type { NextPage, GetStaticProps } from 'next'
import Head from 'next/head'
import styles from 'styles/Home.module.css'
import { i18n } from 'next-i18next.config'
import { useTranslation } from 'next-i18next'
import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
import { Stack, Button } from '@mui/material'
import { SampleLocale } from 'components/SampleLocale'
...
しかし、何かのルールを決めて管理しないとどのコンポーネントを追加したか把握できなくて、管理が難しいなる問題があります。
今回のブログポストではESLint
のeslint-plugin-import
を使ってimport
部分をソートする方法について説明します。
- eslint-plugin-import: https://github.com/import-js/eslint-plugin-import
今回のブログポストはESLint
がプロジェクトに設定されたと仮定して説明します。
eslint-plugin-importのインストール
eslint-plugin-import
を使ってimport
部分をソートするためにはeslint-plugin-import
をインストールする必要があります。次のコマンドを使ってeslint-plugin-import
をインストールします。
npm install eslint-plugin-import --save-dev
eslint-plugin-importの設定
このようにインストールしたeslint-plugin-import
を使うためにはeslint-plugin-import
を設定する必要があります。
eslint-plugin-import
を設定するため.eslintrc.js
ファイルを開いて下記のように修正します。
module.exports = {
...
plugins: [
...
'import',
],
rules: {
...
'import/order': [
'error',
{
groups: ['builtin', 'external', 'internal'],
pathGroups: [
{
pattern: '{react,react-dom/**}',
group: 'external',
position: 'before',
},
],
pathGroupsExcludedImportTypes: ['react'],
'newlines-between': 'always',
alphabetize: {
order: 'asc',
caseInsensitive: true,
},
},
],
},
}
eslint-plugin-importの検査
このようにeslint-plugin-import
を設定したら、次はESLint
を実行してみます。eslint-plugin-import
を設定してESLint
を実行したら下記のようなエラーが出ることが確認できます。
2:1 Error: There should be at least one empty line between import groups import/order
4:1 Error: There should be at least one empty line between import groups import/order
4:1 Error: `next-i18next.config` import should occur before import of `styles/Home.module.css` import/order
5:1 Error: `next-i18next` import should occur before import of `next/head` import/order
6:1 Error: `next-i18next/serverSideTranslations` import should occur before import of `next/head` import/order
7:1 Error: There should be at least one empty line between import groups import/order
7:1 Error: `@mui/material` import should occur before import of `next` import/order
8:1 Error: `components/SampleLocale` import should occur before import of `styles/Home.module.css` import/order
これで私たちが設定したeslint-plugin-import
が上手く動作してることが確認できます。
完了
これでESLint
のeslint-plugin-import
を設定してimport
部分をソートする方法について見てみました。今からはコンポーネントとライブラリを追加するためのimport
部分を綺麗にソートして管理することができるようになりました。
私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!
アプリ広報
Deku
が開発したアプリを使ってみてください。Deku
が開発したアプリはFlutterで開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。