[Biome博客翻译]Biome v1版本

原文:biomejs.dev/blog/biome-... 。以下为翻译。

在Biome v1中,格式化器有JSX引号和箭头函数中的括号的选项;CLI添加了一个新的命令biome lint,支持.jsonc文件,并且可以扩展配置文件。

你可以通过运行以下命令来升级Biome:

bash 复制代码
npm install --save-dev --save-exact @biomejs/biome@1.0.0
pnpm update --save-exact @biomejs/biome@1.0.0
yarn upgrade --exact @biomejs/biome@1.0.0

或者安装VS Code扩展将Biome集成到你的编辑器中。

新的格式化选项

Biome现在支持两个新的,备受期待的选项:

  • 支持在JSX中格式化首选引号类型;
  • 支持只在需要时在箭头函数中格式化括号;

JSX引号样式

你可以通过CLI或biome.json文件使用此选项:

json 复制代码
{
  "javascript": {
    "formatter": {
      "jsxQuoteStyle": "single"
    }
  }
}
shell 复制代码
biome format --jsx-quote-style=single --write ./src

然后Biome将在定义JSX代码中的属性时应用单引号:

jsx 复制代码
import Item from "./item.jsx";

const Header = () => {
  return <Item title="Docs" />;
};

箭头函数括号

你可以决定不在箭头函数中打印括号。你可以通过CLI或biome.json自定义选项:

json 复制代码
{
  "javascript": {
    "formatter": {
      "arrowParentheses": "asNeeded"
    }
  }
}
shell 复制代码
biome format --arrow-parentheses=as-needed --write ./src

然后Biome将只为需要它们的箭头函数打印括号:

jsx 复制代码
// 不需要括号
const filter = (term) => {};
// 需要括号
const filterBy = (term, fn) => {};

CLI改进

CLI进行了大量的重构,以保证在处理文件、发出诊断和命令时的一致性行为。

在这些更改中,有一些破坏性更改在其行为中。

  • 如果配置文件包含错误,CLI将以错误代码退出;虽然Biome可以成功解析配置-即使有错误-这对我们的用户来说是一个危险。 配置文件中的一个拼写错误可能会导致Biome应用其默认值,并以与用户设置的行为不同的方式执行Biome。
  • biome check命令现在将为_未格式化的代码_发出错误诊断,并以错误代码退出。这种行为与此命令的语义相符。

新的biome lint命令

biome check命令旨在运行多个工具,这有时会使用户感到不知所措。使用biome lint,Biome将只对文件运行lint规则。

目前,该命令接受biome check的几乎所有CLI参数。在未来,此命令将专门化并围绕linting调整其行为。

对错误的更多控制

默认情况下,当Biome看到一个无法处理的文件时,它会发出一个诊断并以错误代码退出。

使用--files-ignore-unknown选项,CLI不会发出诊断并将继续处理文件。

你也可以在biome.json中定义这种行为:

json 复制代码
{
  "files": {
    "ignoreUnknown": true
  }
}

当Biome在命令期间不处理文件时,它会以错误代码退出并发出错误诊断。

现在,使用--no-errors-on-unmatched,Biome将以成功的代码存在并不发出任何诊断。

这个新选项允许用户使用像lint-staged这样的工具使用Biome。

在警告时退出

在Biome中,你可以更改规则的配置并允许它们发出诊断。这种行为是有限的,现在使用--error-on-warnings选项,你可以告诉Biome如果发出警告就以错误代码退出。

这是一个例子,让我们通过biome.json更改规则的诊断级别:

json 复制代码
{
  "linter": {
    "recommended": true,
    "rules": {
      "a11y": {
        "useAltText": "warn"
      }
    }
  }
}

这是一个将触发规则的示例代码:

jsx 复制代码
const Image = () => {
  return <img src="https://example.com/image.png" />;
};

现在,使用新选项运行CLI:

shell 复制代码
biome lint --error-on-warnings ./src

JSONC支持和注释

Biome的JSON解析器现在支持注释,所以我们启用了这些令人兴奋的新功能。

.jsonc文件支持

Biome现在可以格式化和lint.jsonc文件。

在JSON文件中允许注释

Biome可以解析JSON文件中的注释。你可以通过配置文件选择此功能:

json 复制代码
{
  "json": {
    "parser": {
      "allowComments": true
    }
  }
}

:::note biome.json文件允许注释。 :::

:::caution 启用此功能时,将在Biome遇到的所有JSON文件中允许注释。 :::

此外,Biome现在将一些已知 文件识别为"可以有注释的JSON文件"。例如,现在Biome可以 格式化你的带有注释的tsconfig.json文件,而不会发出错误!

extends属性

你现在可以将你的配置文件分解成不同的文件,并使用新的extends属性将它们连接起来。

json 复制代码
{
  "extends": ["./formatter.json", "./linter.json"]
}

查看文档了解它是如何工作的。

Linter

我们删除了两个规则:

  • useCamelCase,被useNamingConvention替代;
  • noExtraSemicolon,不需要;格式化器会处理它;

新规则

提升的规则

新的规则被提升,详情请查看#4750

以下规则现在是推荐的:

支持函数类参数装饰器

在最后的发布中,Biome引入了对Stage 3装饰器的支持。尽管,这个最终提案不支持函数类参数装饰器:

js 复制代码
class Controller {
    get(@Param("id") id: string) {}
    // ^^^^^^^^^^^^ 官方和最终装饰器规范不涵盖的语法
}

一些用户对此不满,因为他们不能在他们的Angular/NestJS项目中使用Biome。现在你可以通过配置来做到这一点:

json 复制代码
{
  "javascript": {
    "parser": {
      "unsafeParameterDecoratorsEnabled": true
    }
  }
}

致谢

非常感谢以下贡献者:

  • denbezrukov,他们实现了新的装饰器参数,格式化器中的新选项jsxQuoteStyle,并开始了我们新的CSS解析器的工作;
  • Conaclos,他们继续创建新的规则,使现有的规则更智能,并为Biome添加了大量的价值;
  • SuperchupuDev,他们在格式化器中实现了新的选项arrowParentheses
  • nissy-dev,他们修复了围绕linter的一堆问题;
  • unvalley,他们修复了围绕linter的一堆问题并实现了新的规则;
  • arendjr,他们在linter中实现了新的规则并实现了新的导入排序策略;
  • ddanielsantos,对他们对项目的第一次贡献;
  • nikeee,对他们对项目的第一次贡献;
相关推荐
不会敲代码13 小时前
手写 Mini React:从 JSX 到虚拟 DOM 再到 render,搞懂 React 底层原理
前端·javascript·react.js
kyriewen4 小时前
你的代码仓库变成“毛线团”了?Monorepo 用 Turborepo 拆成“乐高积木”
前端·javascript·面试
身如柳絮随风扬4 小时前
你知道什么是 Ajax 吗?—— 从入门到原理,一篇彻底搞懂
前端·ajax·okhttp
旷世奇才李先生5 小时前
Vue3\+TypeScript 2026实战——企业级前端项目架构搭建与性能优化全指南
前端·架构·typescript
Beginner x_u5 小时前
前端八股整理(工程化 02)|CommonJS/ESM、Webpack Loader/Plugin 与Vite 对比
前端·webpack·node.js·plugin·loader
openKaka_5 小时前
createRoot 到底创建了什么:FiberRootNode 和 HostRootFiber 的初始化过程
前端·javascript·react.js
习明然6 小时前
UniApp开发体验感受总结
前端·uni-app
刀法如飞7 小时前
Claude Code Skills 推荐:2026年最值得安装的10个AI技能
前端·后端·ai编程
Lee川7 小时前
面试手写 KeepAlive:React 组件缓存的实现原理
前端·react.js·面试
墨染天姬8 小时前
【AI】cursor提示词小技巧
前端·数据库·人工智能