原文: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
,不需要;格式化器会处理它;
新规则
-
此规则不允许在JSON对象中使用重复的键。
-
此规则计算复杂性得分,并报告得分超过可配置阈值的代码。
-
此规则不允许
switch
案例落入下一个case
。 -
此规则建议使用
Number.isFinite
而不是全局和不安全的isFinite
,后者尝试类型强制转换。 -
此规则建议使用
Number.isNaN
而不是全局和不安全的isNaN
,后者尝试类型强制转换。 -
此规则不允许在字符串字面量中使用
\8
和\9
转义序列。 -
此规则不允许接口和类之间的声明合并。
-
此规则不允许无用的
export {}
。 -
此规则不允许在箭头函数中无用地别名化
this
。 -
此规则不允许使用
void
。 -
此规则建议将函数表达式转换为箭头函数。 使用
this
的函数表达式被忽略。 -
此规则强制
get
方法始终返回一个值。 -
启用对本地导入应如何导入的限制。
-
此规则建议使用
Array.isArray()
而不是instanceof Array
。 -
该规则在整个代码库中强制执行Javascript和TypeScript的广泛命名约定。
提升的规则
新的规则被提升,详情请查看#4750:
suspicious/noDuplicateJsxProps
suspicious/noConsoleLog
correctness/useIsNan
complexity/useSimpleNumberKeys
complexity/useLiteralKeys
complexity/noForEach
a11y/useHeadingContent
以下规则现在是推荐的:
支持函数类参数装饰器
在最后的发布中,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,对他们对项目的第一次贡献;