Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

eslint v9で追加されたunused disable directivesとbiomeは相性がいいかもしれない #64

Merged
merged 4 commits into from
Dec 1, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 12 additions & 8 deletions app/routes/posts/eslint-v9-biome.mdx
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -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`というエラーになりますが、コアルールに限ってはこれはならないです。
なので例えば、以下のようなコードがあったとします。
Expand All @@ -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対応が進んでいるので、今後が楽しみです。
Expand Down