👍

eslint-plugin-importで保存時に自動でソートできない問題の対処方法

2024/04/04に公開

発生した問題の概要

  • eslint-plugin-importを設定しているのに、保存時の自動フォーマットでimport順がルール通りにソートされませんでした。

エラーの再現手順

  • import順のルール設定を、external(npmでインストールした外部ライブラリ)の次にinternal(自作モジュール)」で設定する。
  • 以下の状態でフォーマットすると、import ReactDOM from 'react-dom/client'import React from 'react'の下に移動してほしいが、「react-dom/client import should occur before import of @/App」という警告が出るだけで、移動してくれない。
import React from 'react'
// import ReactDOM from 'react-dom/client' ← ここに自動で移動してほしい

import App from '@/App'

import '@/index.css'
import ReactDOM from 'react-dom/client' // ← 警告が出るだけで移動されない

原因

  • 公式ドキュメントによると、Unbound import(import '@/index.css'のように、特定の変数にバインドされていないimport)がimportの途中に紛れている場合、移動や並び替えによる副作用があるとみなして、修正が失敗することがあるとのことでした。

解決方法

  • 1番上、もしくは1番下にUnbound importを移動させることで、自動でソートできるようになりました。
import '@/index.css' // 一番上に移動

import React from 'react'
import ReactDOM from 'react-dom/client'

import App from '@/App'

まとめ

  • なかなか解決できる記事が出てこなくて困りましたが、公式ドキュメントを読むことで解決できました。まずは公式ドキュメントを見る癖をつけていきたいですね。

Discussion