[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,对他们对项目的第一次贡献;
相关推荐
崔庆才丨静觅12 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby606113 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了13 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅13 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅14 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅14 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment14 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅14 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊14 小时前
jwt介绍
前端
爱敲代码的小鱼15 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax