[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,对他们对项目的第一次贡献;
相关推荐
蜗牛快跑2132 分钟前
面向对象编程 vs 函数式编程
前端·函数式编程·面向对象编程
Dread_lxy3 分钟前
vue 依赖注入(Provide、Inject )和混入(mixins)
前端·javascript·vue.js
涔溪1 小时前
Ecmascript(ES)标准
前端·elasticsearch·ecmascript
榴莲千丞1 小时前
第8章利用CSS制作导航菜单
前端·css
奔跑草-1 小时前
【前端】深入浅出 - TypeScript 的详细讲解
前端·javascript·react.js·typescript
羡与1 小时前
echarts-gl 3D柱状图配置
前端·javascript·echarts
guokanglun1 小时前
CSS样式实现3D效果
前端·css·3d
咔咔库奇1 小时前
ES6进阶知识一
前端·ecmascript·es6
渗透测试老鸟-九青2 小时前
通过投毒Bingbot索引挖掘必应中的存储型XSS
服务器·前端·javascript·安全·web安全·缓存·xss
龙猫蓝图2 小时前
vue el-date-picker 日期选择器禁用失效问题
前端·javascript·vue.js