From f9e6869460c088c5bd4d201d24ff50187c7f0c59 Mon Sep 17 00:00:00 2001 From: yossydev Date: Mon, 18 Nov 2024 23:21:27 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20Biome=E3=81=A8ESLint=E3=81=AF?= =?UTF-8?q?=E5=85=B1=E5=AD=98=E3=81=95=E3=81=9B=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/routes/posts/biome-and-eslint.mdx | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 app/routes/posts/biome-and-eslint.mdx diff --git a/app/routes/posts/biome-and-eslint.mdx b/app/routes/posts/biome-and-eslint.mdx new file mode 100644 index 0000000..7028c99 --- /dev/null +++ b/app/routes/posts/biome-and-eslint.mdx @@ -0,0 +1,10 @@ +--- +title: "BiomeとESLintは共存できる" +description: "a" +date: "2024/11/18" +updatedAt: "2024/11/18" +path: "biome-and-eslint" +published: true +--- + +ここに本文を書く From 4140af753ccc5b2f61dc809d005d127d82fa2719 Mon Sep 17 00:00:00 2001 From: yossydev Date: Sun, 22 Dec 2024 22:45:14 +0900 Subject: [PATCH 2/3] update --- app/routes/posts/biome-and-eslint.mdx | 10 ---- .../posts/biome-and-typescript-eslint.mdx | 59 +++++++++++++++++++ 2 files changed, 59 insertions(+), 10 deletions(-) delete mode 100644 app/routes/posts/biome-and-eslint.mdx create mode 100644 app/routes/posts/biome-and-typescript-eslint.mdx diff --git a/app/routes/posts/biome-and-eslint.mdx b/app/routes/posts/biome-and-eslint.mdx deleted file mode 100644 index 7028c99..0000000 --- a/app/routes/posts/biome-and-eslint.mdx +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "BiomeとESLintは共存できる" -description: "a" -date: "2024/11/18" -updatedAt: "2024/11/18" -path: "biome-and-eslint" -published: true ---- - -ここに本文を書く diff --git a/app/routes/posts/biome-and-typescript-eslint.mdx b/app/routes/posts/biome-and-typescript-eslint.mdx new file mode 100644 index 0000000..669a61f --- /dev/null +++ b/app/routes/posts/biome-and-typescript-eslint.mdx @@ -0,0 +1,59 @@ +--- +title: "Biomeとtypescript-eslintの併用と型情報Lintの課題" +description: "a" +date: "2024/12/24" +updatedAt: "2024/12/24" +path: "biome-and-typescript-eslint" +published: true +--- + +[2024年 ユウトの一人アドベントカレンダー](https://adventar.org/calendars/9980)の24日目の記事です。 + +## Intro + +VercelがBiomeのGold Sponsorになりました。 + +これを機に、採用していく企業やチームが増えていくはずなので、Biomeの課題でもある型情報Lintの話をしようと思います。 + +本記事では話をスムーズに進ませるために、いくつか前提をすっ飛ばしていくので、以下のブログを見ていただけると、話がスムーズに進むかもしれません。 + +- [typescript-eslintでの型情報の利用とルール実装の実際](https://yossy.dev/posts/typescript-eslint-type-info-rules) +- [eslint v9で追加されたunused disable directivesとbiomeは相性がいいかもしれない](https://yossy.dev/posts/eslint-v9-biome) + +## Details + +Biomeが型情報を用いたLintルールがないことは、有名な話だと思います +こちらについては、[☂️ Type-aware linter #3187](https://github.com/biomejs/biome/issues/3187)をご覧いただければいいでしょう。 + +Biome側がどうするかも気になるところですが、今現在でこの方法を解決する手段として、typescript-eslintとbiomeを同時に動かすという方法を提案します。 + +### typescript-eslintとbiomeを同時に動かす + +動かすために特段難しいことをする必要はなく、二つのパッケージ(正しくはeslintも入っているはずなので三つではあります)をインストールし、セットアップするだけで動かせるはずです。 + +これにより、Biomeの速度の恩恵も受けつつ、typescript-eslintで使いたいルールや、カスタムルールなども使うことができます。 + +ちらっと出たカスタムルールですが、これはBiome側でGritQLを使ったプラグインの作成をできるようになるように進んでいます。これは型情報よりも近いうちにリリースされるはずです。 + +[成長中のFanTech領域におけるBiomeを活用したCIの高速化](https://cadc.cyberagent.co.jp/2024/sessions/fantech-web-biome/)というセッションで、この話と既存のeslintからの移行なども話しているので、ぜひ見てみてください。 + +## typescript-eslintのあり方 + +余談ですが、今年のVueFesに参加した際、Vue.jsの作者の[Evan You](https://x.com/youyuxi)と、OXCの作者の[Boshen](https://x.com/boshen_c)と話す機会がありました。 + +OXCはBiome同様、rust製linterのoxlintというものを作っています。そのため、気になっていた「typescript-eslint相当のlintルールを作ることはやはり難しいのか」という質問をしました。 + +この際、覚えている限りでは以下のような返答をいただきました。 + +- tscは遅すぎる +- typescript-eslintはtypescript本体が持っているべきでは? + +Biome側がtypescript-eslit相当のものを実装しない要因として、tscの遅さは同様に挙げていました。 +実際、普通に実行した時にはそこの課題は露呈していると思います。 + +同時にやはりisolatedDeclartionがデフォルトになれば、tscは早くなるはずなので、そうなればできるかも。みたいなことも言っていました。 + +## まとめ + +最後は少し余談を挟んでしまいましたが、要するに、 +Biomeを採用する際にtypescript-eslintがない、カスタムルールがないから使わない。というのは、eslint + typescrip-eslintを併用すれば解決できます。 \ No newline at end of file From 72bda0b39a92054c39ca7b93664f50f52662c871 Mon Sep 17 00:00:00 2001 From: yossydev Date: Wed, 25 Dec 2024 02:03:43 +0900 Subject: [PATCH 3/3] update --- app/routes/posts/biome-and-typescript-eslint.mdx | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/app/routes/posts/biome-and-typescript-eslint.mdx b/app/routes/posts/biome-and-typescript-eslint.mdx index 669a61f..ea584d0 100644 --- a/app/routes/posts/biome-and-typescript-eslint.mdx +++ b/app/routes/posts/biome-and-typescript-eslint.mdx @@ -1,13 +1,13 @@ --- title: "Biomeとtypescript-eslintの併用と型情報Lintの課題" -description: "a" -date: "2024/12/24" -updatedAt: "2024/12/24" +description: "VercelがBiomeのGold Sponsorになりました。これを機に、採用していく企業やチームが増えていくはずなので、Biomeの課題でもある型情報Lintの話をしようと思います。" +date: "2024/12/25" +updatedAt: "2024/12/25" path: "biome-and-typescript-eslint" published: true --- -[2024年 ユウトの一人アドベントカレンダー](https://adventar.org/calendars/9980)の24日目の記事です。 +[2024年 ユウトの一人アドベントカレンダー](https://adventar.org/calendars/9980)の25日目の記事です。 ## Intro @@ -15,6 +15,8 @@ VercelがBiomeのGold Sponsorになりました。 これを機に、採用していく企業やチームが増えていくはずなので、Biomeの課題でもある型情報Lintの話をしようと思います。 +## 前提 + 本記事では話をスムーズに進ませるために、いくつか前提をすっ飛ばしていくので、以下のブログを見ていただけると、話がスムーズに進むかもしれません。 - [typescript-eslintでの型情報の利用とルール実装の実際](https://yossy.dev/posts/typescript-eslint-type-info-rules) @@ -56,4 +58,4 @@ Biome側がtypescript-eslit相当のものを実装しない要因として、ts ## まとめ 最後は少し余談を挟んでしまいましたが、要するに、 -Biomeを採用する際にtypescript-eslintがない、カスタムルールがないから使わない。というのは、eslint + typescrip-eslintを併用すれば解決できます。 \ No newline at end of file +Biomeを採用する際にtypescript-eslintがない、カスタムルールがないから使わない。というのは勿体無く、biome + eslint + typescrip-eslintを併用すれば解決できるかもしれません。 \ No newline at end of file