コンテンツにスキップ

Biome v2.1

プロジェクトのブランド:"Biome, toolchain of the web" プロジェクトのブランド:"Biome, toolchain of the web"

Biome 2.0のリリースから、まだ1か月も経っていません。しかし、この短期間で驚くほど多くの反響をいただきました!Discordは賑わい、ダウンロード数は急増し、バグレポートも続々と寄せられています :)

おそらく一番の議論の的は、Biome 2.0で導入された新しいスキャナーでしょう。これは、ネストされた設定ファイルの検出や、プロジェクトルールが有効な場合のモジュールグラフの構築に使われます。この機能が議論を呼んでいる理由は明確で、スキャナーによって処理が遅くなる一方、ユーザーはBiomeに高速性を求めているからです。

速度低下を軽減するために、2.0ではプロジェクトルールをオプトインにしており、ユーザーは機能と速度のどちらを優先するか自分で選択できます。しかし理想的には、両方を実現したいところです。そして残念ながら、プロジェクトルールがなくても、スキャナーはある程度の目に見えるオーバーヘッドを引き起こしていました。

Biome 2.1では、「軽量スキャナー」(プロジェクトルールが無効な場合)の動作ロジックを変更しています。以前は、常にプロジェクトのルートから全体をスキャンしていましたが、現在はBiomeに操作を要求するファイルとフォルダーを、プロジェクトのどの部分をスキャンすべきかのヒントとして使用します。

つまり、プロジェクトルートから引数なしでBiomeを実行する場合、違いに気付くことはありません。しかし、チェックする特定のファイルを指定したり、ネストされたフォルダー内でBiomeを実行したりすると、スキャナーはプロジェクトのどの部分に興味があるかを認識し、それらの部分のみをスキャンします。

プロジェクトルールを有効にしている場合、これらの改善は適用されないことに注意してください。プロジェクトルールは、指定していないファイルを含む他のファイルから情報を取得する必要があることが多いため、現時点では引き続きプロジェクト全体をスキャンします。

Biome 2.0をリリースしたとき、型推論がnoFloatingPromisesルールが理想的に検出すべきケースの約75%を検出できると述べました。それ以来、これを約85%に改善し、次のようなケースも正常に推論できるようになりました:

// これがPromiseに評価されることがわかります:
true && Promise.reject("logical operator bypass");
// しかし、これはPromiseではありません:
false && Promise.reject("logical operator bypass");
// 同様に、これがPromiseを返す可能性があることを検出するようになりました:
const condition = Math.random() > -1; // 常にtrueですが、リンターには動的
condition ? Promise.reject("ternary bypass") : null;
// 一方、以下は決してPromiseではないことがわかります:
const alwaysFalsy = 0;
alwaysFalsy ? Promise.reject("ternary bypass") : null;
// Promiseが処理されていないため、これにフラグが立てられるようになりました:
[1, 2, 3].map(async (x) => x + 1);

さらに、ゲッター、呼び出しシグネチャ(Call Signature)、カンマ演算子などのサポートを追加しました。私たちの目標は、TypeScriptのどの部分がサポートされているかを心配する必要がなく、大部分のケースが「ただ動く」ようにすることです。まだ作業中ですが、進捗に満足しています。

そして最後に、関連するルールnoMisusedPromisesも追加しました。

2.1.0で以下の新しいルールが追加されました:

その他の注目すべき変更:

  • ルート設定からネストされた設定ファイルを無視すると、適切に無視されるようになりました。
  • 別の設定から拡張する場合、他の設定のrootを正しく無視するようになりました。これはいくつかのユースケースで混乱を招いていました。

2.xの旅はまだ始まったばかりです。スキャナーも型推論もさらなる改善が見込まれます。さらに、コアコントリビューター2025年のロードマップを進め、次の機能に焦点を当てます:

  • HTMLサポートを安定させる
  • Vue、Svelte、Astro、そしてうまくいけばAngularもサポートするようにHTMLを拡張する
  • Markdownサポートをパーサー実装から開始する
  • その他多数!

@biomejs/biomeパッケージをインストールまたは更新します。パッケージをアップグレードする場合は、migrateコマンドを実行してください。

Terminal window
npm install --save-dev --save-exact @biomejs/biome
npx @biomejs/biome migrate --write

migrateコマンドは設定の破壊的変更を処理するので、手動で行う必要はありません。

この方向性が気に入っています、どうすれば手伝えますか?

Section titled “この方向性が気に入っています、どうすれば手伝えますか?”

Biomeは、プログラミング、オープンソース、Biomeの哲学を愛するボランティアによって主導されているプロジェクトです。どんな助けも歓迎します😁

Biomeに精通していて、その普及に貢献したい場合は、ウェブサイトを母国語に翻訳して私たちを支援できます。このダッシュボードで、サポートされている言語と、ドキュメントが最新かどうかを確認できます。

Discordサーバーに参加して、コミュニティと交流してください。コミュニティとチャットし、コミュニティの一員であることは、貢献の一形態です。

プロジェクトの技術的側面が好きで、Rust言語への道を歩みたい、またはパーサー、コンパイラー、アナライザーなどに関する知識を実践したい場合、Biomeはあなたのためのプロジェクトです!

探求すべき多くの側面があります。退屈することはないと保証します。以下は、始められるものの小さなリストです:

プロジェクトの将来を信じている場合は、Open CollectiveまたはGitHub Sponsorsを通じて財政的な貢献で支援することもできます。

さらに、プロジェクトはエンタープライズサポートプログラムを提供しており、企業としてコアコントリビューターの1人と契約してBiomeツールチェーンの特定の側面に取り組むことができます。