diff --git a/app/routes/posts/eslint-v9-biome.mdx b/app/routes/posts/eslint-v9-biome.mdx index bc64055..3360da5 100644 --- a/app/routes/posts/eslint-v9-biome.mdx +++ b/app/routes/posts/eslint-v9-biome.mdx @@ -1,13 +1,13 @@ --- title: "eslint v9で追加されたunused disable directivesとbiomeは相性がいいかもしれない" -description: "a" +description: "最近v9へのバージョンアップを行ったんですが、その際に`lint --fix`を行うとなぜか大量のeslint-disableコメントが削除されるようになりました。これはeslint v9.5で追加された`remove unused eslint-disable directive`という機能によるものなんですが、これを使えばBiomeへの以降もちょっとやりやすくなるのかなと思った話をします。" date: "2024/12/01" updatedAt: "2024/12/01" path: "eslint-v9-unused-disable-directives-biome" -published: false +published: true --- -本記事は、[ユウトの一人アドベントカレンダー](https://adventar.org/calendars/9981)の1日目です +[2024年 ユウトの一人アドベントカレンダー](https://adventar.org/calendars/9980)の1日目の記事です。 ## Intro @@ -31,10 +31,12 @@ published: false 筆者は、現在のBiomeのLinterの上手な使い方は、ESLintと共存させることだと思っています。 Biomeの恩恵を受けつつ、足りない機能、カスタムルールやtypescript-eslintを使用し、型情報のLintなども可能になるためです。 -これは新規プロダクトよりも、すでにある程度Lintに依存しているプロダクトの方がメリットはあるかと思います。しかし、そうなった場合に一つ課題としてあるのが、ESLintルールの後始末です。 +これは新規プロダクトよりも、すでにある程度ESLintに依存しているプロダクトの方がメリットはあるかと思います。しかし、そうなった場合に一つ課題としてあるのが、ESLintルールの後始末です。 例えば、eslintのコアルールをいくつかBiomeに置き換えたいとします。この中のルールにはBiomeに移行できるものもあれば、そうでないものも色々混ざっています。 -そうでないものは引き続き個別にルールをonにして使えば良いかと思いますが、Biomeで使えるものは速度面でもなるべく移行したいです。 +そうでないものは引き続き個別にルールをonにして使えば良いかと思いますが、Biomeで使えるものは、速度面でもなるべく移行したいです。 + +### Definition for rule foo rule was not found しかし、ESLintのコアルールは、通常定義されていないルールをeslint-disableしようとすると、`Definition for rule 'foo rule' was not found`というエラーになりますが、コアルールに限ってはこれはならないです。 なので例えば、以下のようなコードがあったとします。 @@ -55,20 +57,22 @@ function foo() { const my_variable = 123; ``` -eslint-disableなのでminifyしていれば削除されるとはいえ、なるべくデッドコードは無くしておきたいです。 +このように、コアルールは引き続きコード上に残ってしまいます。 + +eslint-disableはminifyしていれば削除されるとはいえ、なるべくデッドコードは無くしておきたいです。 ## unused disable directivesで解決 遠回りしましたが、今回伝えたかったことです。 最初にもお伝えした通り、eslint v9からは、無効な`eslint-disable`があった場合、warnが出るようになり、auto fixしてくれるようにもなりました。 -つまり、**Biome移行時の一つのmigrateコマンドとして機能としてくれるということ**です。 +つまり捉え方によっては、**Biome移行時の一つのmigrateコマンドとして機能としてくれるということ**です。 しかも、場合によっては移行時に意図せず無効になってしまっているルールにも気づくことができます。筆者はこれを実際に体験しました。 ## まとめ -今更v9のことかよと思われた方もいるかもしれませんが、筆者は基本Reactプロジェクトしか見ていないので、eslint-plugin-react-hooksの影響で揚げたくてもなかなかあげられませんでした。 +今更v9のことかよと思われた方もいるかもしれませんが、筆者が関わっているReactプロジェクトのeslint-plugin-react-hooksの影響でバージョンをなかなかあげられませんでした。 最近やっとv9対応してくれたのであげてみて、今回の内容に繋がった次第です。 Biomeも着々とplugin対応が進んでいるので、今後が楽しみです。