Biome 是笔者觉得未来会很有使用场景的一个工具,我觉得就目前的维护力度以及规划来看,2025 年 Biome 会赢。
在前段时间,Biome 发布了 2025 的规划,以及对于 2024 年的一些回顾,我们可以来一起看看。
回顾: Biome 2024
2024 年对于 Biome 来说意义重大,这一年可以说是进展神速:
-
一共发布了4个 minor 级别的版本迭代,分别是从 1.6 到 1.9,迭代了大量很有用的 features:
- 新增
biome search
和biome explain
两个命令,使得biome migrate
命令得到了显著的拓展,使得用户从 ESLint 和 Prettier 迁移过来更加容易。 - 支持了 CSS 以及 GraphQL 文件的 format 以及 lint
- 部分支持了 Astro 、Svelte 以及 Vue 文件
- 支持了配置文件之间可以互相 extends,这对于 monorepo 以及大型项目组织会很有用
- 自定义 reporters (biomejs.dev/reference/r...) 可以实现更好的 CI 集成以及机器可读的日志输出
- 支持了
.editorconfig
配置 - 支持了无数条新的 lint 规则以及一些规则的修复和改进,这里特别要提到对于
useSortedClasses
(biomejs.dev/linter/rule...) 这一规则的支持,这标记着 Biome 已经初步开始支持了 Tailwind
- 新增
-
Biome 的维护人员(github.com/biomejs/bio...%25E7%2594%25B1 "https://github.com/biomejs/biome/blob/main/CONTRIBUTING.md#current-members)%E7%94%B1") 2024年最初的 10 个增长到了 18 个(笔者很荣幸作为其中的一员)
-
Biome 在 OS Awards 2024(osawards.com/javascript/...) 中赢下了 "Productivity Booster"奖项(其中 Rspack 拿下同年 Breakthroungh of the year 奖项)
-
Biome 增加了一些新的 Sponsors (github.com/biomejs/bio...%25EF%25BC%258C%25E5%259B%25A0%25E4%25B8%25BA "https://github.com/biomejs/biome#sponsors)%EF%BC%8C%E5%9B%A0%E4%B8%BA") Biome 是一个完全的社区驱动项目,社区的 sponsors 对于 biome 来说显得尤其珍贵
-
在多个方面改进了对于 IDE 的支持:
- 新增了 Zed 拓展支持
- 对于 VS Code 拓展进行了全面的改造,目前处于预发布阶段
- IDEA 插件同样也有个大版本的更新,目前可以通过 nighltly channel 来使用
企业支持
Biome 将在 2025 年 1 月开始提供企业支持的方式(参考: biomejs.dev/enterprise/...%25EF%25BC%258C%25E8%25BF%2599%25E5%25B0%2586%25E4%25BC%259A%25E8%25AE%25A9%25E5%2585%25B6%25E4%25B8%25AD%25E7%259A%2584%25E4%25B8%2580%25E4%25BA%259B%25E8%25B4%25A1%25E7%258C%25AE%25E8%2580%2585%25E6%259C%2589%25E6%259B%25B4%25E5%25A4%259A%25E7%259A%2584%25E6%2597%25B6%25E9%2597%25B4%25E5%2592%258C%25E7%25B2%25BE%25E5%258A%259B%25E6%258A%2595%25E5%2585%25A5%25E5%2588%25B0 "https://biomejs.dev/enterprise/)%EF%BC%8C%E8%BF%99%E5%B0%86%E4%BC%9A%E8%AE%A9%E5%85%B6%E4%B8%AD%E7%9A%84%E4%B8%80%E4%BA%9B%E8%B4%A1%E7%8C%AE%E8%80%85%E6%9C%89%E6%9B%B4%E5%A4%9A%E7%9A%84%E6%97%B6%E9%97%B4%E5%92%8C%E7%B2%BE%E5%8A%9B%E6%8A%95%E5%85%A5%E5%88%B0") Biome 开发中去。
Biome 2.0 规划
目前 Biome team 正在忙于 2.0 的开发,由于 Biome 仍然由社区志愿贡献者来维护,2.0 目前并没有预期的发布时间,但 Biome 2.0 将会带来这样的一些新特性:
-
Plugins : 插件系统是个长期要求的 features,Biome 在 2024 年 1 月份的一个 RFC (github.com/biomejs/bio...%25E5%2590%258E%25E5%25B0%25B1%25E5%25BC%2580%25E5%25A7%258B%25E4%25BA%2586%25E6%258F%2592%25E4%25BB%25B6%25E7%259A%2584%25E5%25BC%2580%25E5%258F%2591%25E6%25B5%2581%25E7%25A8%258B "https://github.com/biomejs/biome/discussions/1762)%E5%90%8E%E5%B0%B1%E5%BC%80%E5%A7%8B%E4%BA%86%E6%8F%92%E4%BB%B6%E7%9A%84%E5%BC%80%E5%8F%91%E6%B5%81%E7%A8%8B") 。Biome 2.0 中会带来插件的一些能力: 用户可以通过编写插件的形式来创建自己的 lint 规则当用户使用 GritQL 语言开发的时候。
-
Domains : Domains 是一个配置功能,它可以帮助用户轻松的启用或者禁用掉与特定领域相关的所有规则,例如 React、Next.js 或者测试框架,它还允许 Biome 根据
package.json
中列出的依赖项自动启用推荐的特定领域的 lint 规则,具体可以参考: github.com/biomejs/bio... -
Monorepo Support : 虽然目前
biome.json
配置文件支持了extends
配置显著提升了对于 Monorepo 项目支持,但目前依旧存在比较多的薄弱环节。Biome 2.0 将会基于内部的ProjectLayout
能力来显著提升目前的 monorepo 支持架构,将会解决目前的大部分问题。 -
Suppressions: Biome 目前已经支持通过抑制注释
// biome-ignore
来抑制某些linter
诊断,在 Biome 2.0 中,添加了对于// biome-ignore-all
以及// biome-ignore-start/biome-ignore-end
注释的支持。 -
Multi-file analysis: Biome 2.0 支持了真正的多文件分析(以前都只支持从单个文件分析,没办法获取多个文件的上下文)。这意味着未来 Biome 的 lint 规则将可以从其他文件中查询到信息,这将会启用更强大的 lint 规则。
2025 roadmap
OK,下面就是 Biome 2025 年的 roadmap 介绍了,再次之前,需要强调的是: 因为 Biome 是一个完全由社区驱动的项目,所以这里依然没办法承诺做到以下的功能一定能完成。但这同样并不意味着 Biome 团队没有一份 2025 年想要实现的功能清单:
- HTML support : 如果不支持 html 的 formatter 以及 linter,那么对于一个 Web 工具链而言,这将会是不完整的,目前 Biome 团队已经在研究这一能力了: github.com/biomejs/bio...
- Embedded languages: 嵌入式语言比如在一个 JavaScript 文件中通过模版字符串插入 CSS 或者 GraphQL 代码片段、或者HTML 文件中的 JS 以及 CSS 代码,Biome 也应该能处理这些,目前 Biome 正在努力实现这一能力,这同样也应该会为 Astro、Svelte 和 Vue 提供比现在更好的支持
- Type inference : 类型推导甚至最早是 Biome 2024 的一个希望实现的能力,但由于 Biome 团队正忙于实现多文件分析等能力来作为类型推导能力的先决条件,甚至还有个初期版本的
noFloatingPromises
规则实现(参考: github.com/biomejs/bio...%25E3%2580%2582%25E4%25BB%258A%25E5%25B9%25B4%25E6%2588%2591%25E4%25BB%25AC%25E6%2583%25B3%25E5%258F%2591%25E5%25B8%2583 "https://github.com/biomejs/biome/pull/4911)%E3%80%82%E4%BB%8A%E5%B9%B4%E6%88%91%E4%BB%AC%E6%83%B3%E5%8F%91%E5%B8%83")noFloatingPromises
的真实版本,并进一步涉足类型推导能力。 - .d.ts generation: 在讨论类型时,Biome 将会支持上第一个 transformation 能力: 基于 TS 源码生成
.d.ts
文件。当然,最开始只会基于开启了 Isolated Modules(www.typescriptlang.org/tsconfig/#i...%25E9%2585%258D%25E7%25BD%25AE%25E7%259A%2584 "https://www.typescriptlang.org/tsconfig/#isolatedModules)%E9%85%8D%E7%BD%AE%E7%9A%84") TS 项目 - JSDoc support: 如果 Biome 可以支持类型推导能力,那么将 JSDoc 注释用作类型信息的来源也将是个不错的能力支持。
- Markdown support: 目前已经有一些进展来支持这个能力了(github.com/biomejs/bio...%25E3%2580%2582 "https://github.com/biomejs/biome/issues/3718)%E3%80%82")
- More plugins: 虽然 Biome 2.0 将推出在 GritQL 中创建 lint 规则的功能,但这只是冰山一角。我们知道我们的用户想要更多,我们当然有更多类型的插件的想法。我们将首先收集 2.0 版本的反馈,然后决定下一步将关注哪个插件领域。
你的支持
如果没有用户以及 Sponsors 在 2024 年给予的大力支持,那么 Biome 这个项目将不会是今天这个样子。
希望今年大家同样给给予 Biome 更多的支持,如果你想支持 Biome ,可以通过以下方式:
- 成为一名贡献者 : 帮助我们开发这些能力(参考: github.com/biomejs/bio...)
- 赞助Biome : 请贵公司赞助我们:Biome 速度非常快,可以减少贵公司的 CI 时间、提高开发人员的工作效率并节省资金。赞助还可以为贵公司创造曝光度(赞助渠道: github.com/biomejs/bio...%25E3%2580%2582 "https://github.com/biomejs/biome/tree/main#funding)%E3%80%82")
- 雇用 Biome Contributor 。Biome 是否缺少任何阻碍贵公司采用它的东西?您可以通过雇用我们来实现这一目标!任何雇用贡献者在 Biome 上工作 3 个月或更长时间的公司都会自动申请赞助福利(渠道: biomejs.dev/enterprise/...%25E3%2580%2582 "https://biomejs.dev/enterprise/)%E3%80%82")
- 提升文档质量 : 编写用户指南或者帮助去翻译文档给一些非英文的开发者们(PR 到 github.com/biomejs/web...%25E3%2580%2582 "https://github.com/biomejs/website/)%E3%80%82")