|
1 | 1 | ---
|
2 | 2 | title: 语言支持
|
3 |
| -description: Biome支持的语言和特性。 |
| 3 | +description: Biome 的语言支持。 |
4 | 4 | ---
|
5 | 5 |
|
6 |
| -| 语言 | 解析 | 格式化 | 检查 | |
7 |
| -| --- | ---- | ----- | --- | |
8 |
| -| JavaScript | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | |
9 |
| -| TypeScript | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | |
10 |
| -| JSX | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | |
11 |
| -| TSX | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | |
12 |
| -| JSON | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | |
13 |
| -| JSONC | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | |
14 |
| -| HTML | <span aria-label="正在进行中" role="img">⌛️</span> | <span aria-label="不在进行中" role="img">🚫</span> | <span aria-label="不在进行中" role="img">🚫</span> | |
15 |
| -| Vue | <span aria-label="不在进行中" role="img">🚫</span> | <span aria-label="不在进行中" role="img">🚫</span> | <span aria-label="不在进行中" role="img">🚫</span> | |
16 |
| -| Svelte | <span aria-label="不在进行中" role="img">🚫</span> | <span aria-label="不在进行中" role="img">🚫</span> | <span aria-label="不在进行中" role="img">🚫</span> | |
17 |
| -| Astro | <span aria-label="不在进行中" role="img">🚫</span> | <span aria-label="不在进行中" role="img">🚫</span> | <span aria-label="不在进行中" role="img">🚫</span> | |
18 |
| -| CSS | <span aria-label="支持" role="img">✅️</span> | <span aria-label="支持" role="img">✅️</span> | <span aria-label="支持" role="img">✅️</span> | |
19 |
| -| [YAML](https://github.com/biomejs/biome/issues/2365) | <span aria-label="正在进行中" role="img">⌛️</span> | <span aria-label="不在进行中" role="img">🚫</span> | <span aria-label="不在进行中" role="img">🚫</span> | |
20 |
| -| GraphQL | <span aria-label="支持" role="img">✅️</span> | <span aria-label="支持" role="img">✅️</span> | <span aria-label="支持" role="img">✅️</span> | |
21 |
| -| [Markdown](https://github.com/biomejs/biome/issues/3718) | <span aria-label="正在进行中" role="img">⌛️</span> | <span aria-label="不在进行中" role="img">🚫</span> | <span aria-label="不在进行中" role="img">🚫</span> | |
| 6 | +标记: |
| 7 | +- ✅:支持 |
| 8 | +- 🚫:未在开发中 |
| 9 | +- ⌛️:开发中 |
| 10 | +- ⚠️:部分支持(可能带有警告) |
22 | 11 |
|
23 |
| -## JavaScript支持 |
| 12 | +| 语言 | 解析 | 格式化 | 检查 | 插件支持 | |
| 13 | +|-|:-:|:-:|:-:|:-:| |
| 14 | +| [JavaScript](#JavaScript 支持) | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | |
| 15 | +| [TypeScript](#TypeScript 支持) | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | |
| 16 | +| JSX | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | |
| 17 | +| TSX | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | |
| 18 | +| JSON | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | <span aria-label="未在开发中" role="img">🚫</span> | |
| 19 | +| JSONC | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | <span aria-label="支持" role="img">✅</span> | <span aria-label="未在开发中" role="img">🚫</span> | |
| 20 | +| HTML | <span aria-label="开发中" role="img">⌛️</span> | <span aria-label="开发中" role="img">⌛️</span> | <span aria-label="未在开发中" role="img">🚫</span> | <span aria-label="未在开发中" role="img">🚫</span> | |
| 21 | +| [Vue](#HTML 超级支持) | <span aria-label="部分支持" role="img">⚠️</span> | <span aria-label="部分支持" role="img">⚠️</span> | <span aria-label="部分支持" role="img">⚠️</span> | <span aria-label="未在开发中" role="img">🚫</span> | |
| 22 | +| [Svelte](#HTML 超级支持) | <span aria-label="部分支持" role="img">⚠️</span> | <span aria-label="部分支持" role="img">⚠️</span> | <span aria-label="部分支持" role="img">⚠️</span> | <span aria-label="未在开发中" role="img">🚫</span> | |
| 23 | +| [Astro](#HTML 超级支持) | <span aria-label="部分支持" role="img">⚠️</span> | <span aria-label="部分支持" role="img">⚠️</span> | <span aria-label="部分支持" role="img">⚠️</span> | <span aria-label="未在开发中" role="img">🚫</span> | |
| 24 | +| CSS | <span aria-label="支持" role="img">✅️</span> | <span aria-label="支持" role="img">✅️</span> | <span aria-label="支持" role="img">✅️</span> | <span aria-label="Supported" role="img">✅</span> | |
| 25 | +| [YAML](https://github.com/biomejs/biome/issues/2365) | <span aria-label="开发中" role="img">⌛️</span> | <span aria-label="未在开发中" role="img">🚫</span> | <span aria-label="未在开发中" role="img">🚫</span> | <span aria-label="未在开发中" role="img">🚫</span> | |
| 26 | +| GraphQL | <span aria-label="支持" role="img">✅️</span> | <span aria-label="支持" role="img">✅️</span> | <span aria-label="支持" role="img">✅️</span> | <span aria-label="未在开发中" role="img">🚫</span> | |
| 27 | +| [Markdown](https://github.com/biomejs/biome/issues/3718) | <span aria-label="开发中" role="img">⌛️</span> | <span aria-label="未在开发中" role="img">🚫</span> | <span aria-label="未在开发中" role="img">🚫</span> | <span aria-label="未在开发中" role="img">🚫</span> | |
| 28 | +| GritQL | <span aria-label="支持" role="img">✅️</span> | <span aria-label="支持" role="img">✅️</span> | <span aria-label="未在开发中" role="img">🚫</span> | <span aria-label="未在开发中" role="img">🚫</span> | |
24 | 29 |
|
25 |
| -Biome支持ES2023版本的语言。 |
| 30 | +## JavaScript 支持 |
26 | 31 |
|
27 |
| -Biome只支持官方语法。当提案达到[第3阶段](https://github.com/tc39/proposals#stage-3)时,团队开始开发新语法。 |
| 32 | +Biome 支持 ES2024 标准并且仅支持官方语法。 |
28 | 33 |
|
29 |
| -## TypeScript(类型脚本)支持 |
| 34 | +我们的团队将在新语法到达 [第三阶段](https://github.com/tc39/proposals#stage-3) 时进行开发。 |
30 | 35 |
|
31 |
| -Biome支持TypeScript版本5.6。 |
| 36 | +## TypeScript 支持 |
32 | 37 |
|
33 |
| -## HTML超级语言支持 |
| 38 | +Biome 支持 TypeScript 5.6。 |
34 | 39 |
|
35 |
| -这些语言需要CSS,HTML和JavaScript解析才能得到适当的支持。一旦这些解析器可用,就可以开始围绕这些超级语言的工作。 |
| 40 | +## JSONC 支持 |
| 41 | + |
| 42 | +JSONC 代表 “带有注释的JSON”。 |
| 43 | + |
| 44 | +这种格式因为其允许用户在配置文件中添加注释而被各种工具广泛使用,如 [VS Code](https://code.visualstudio.com/docs/languages/json#_json-with-comments),[TypeScript](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html),[Babel](https://babeljs.io/docs/config-files) 等。 |
| 45 | + |
| 46 | +但是,由于 JSONC 不是一种严格定义的标准,因此不同工具在处理 JSONC 文件中的尾随逗号的方式存在一些差异。 |
| 47 | +为了适应这一点,Biome 没有为 JSONC 提供专门的语言配置。 |
| 48 | +相反,我们使用了 `json.parser.allowComments`、`json.parser.allowTrailingCommas` 和 `json.formatter.trailingCommas` 选项增强了 JSON 解析和格式化功能。 |
| 49 | +这种方法使 Biome 能够有效地支持 JSON 文件的不同变体。 |
| 50 | + |
| 51 | +对于扩展名为 `.jsonc` 或那些根据 [语言标识符](https://code.visualstudio.com/docs/languages/identifiers) 被确定为 `jsonc` 的文件,Biome 会自动应用以下默认设置进行解析和格式化: |
| 52 | + |
| 53 | +- `json.parser.allowComments`: `true` |
| 54 | +- `json.parser.allowTrailingCommas`: `true` |
| 55 | +- `json.formatter.trailingCommas`: `none` |
| 56 | + |
| 57 | +请注意,一些知名文件如 `tsconfig.json` 和 `.babelrc` 不使用 `.jsonc` 扩展名,但仍允许注释和尾随逗号。 |
| 58 | +但一些其他的文件如 `.eslintrc.json` 只允许注释。Biome 能够识别这些文件并相应地调整 `json.parser.allowTrailingCommas` 选项以确保它们被正确解析。 |
| 59 | + |
| 60 | +文档 [忽略或解析为其他格式的文件](/zh-cn/guides/configure-biome/#已知文件) 会给出 Biome 可以识别的知名文件的完整列表。 |
| 61 | + |
| 62 | +## HTML 超集支持 |
| 63 | + |
| 64 | +在版本 1.6.0 时,这些语言是 **部分** 支持的。 |
| 65 | + |
| 66 | +随着时间的推移,Biome 会变得更好,并且它将提供更多选项来调整您的项目。 |
| 67 | +至于今天,仍有一些限制需要考虑: |
| 68 | + |
| 69 | +- 对于后缀为 `.astro` 的文件, **仅会格式化** 文件支持的一部分。 |
| 70 | +- 对于后缀为 `.vue` 或 `.svelte` 的文件, **只有文件的 \<script\> 标签部分** 支持。 |
| 71 | +- 将 **只显示** 属于上述代码片段的诊断。 |
| 72 | +- 当 **格式化** `.vue` 和 `.svelte` 文件,JavaScript 或 TypeScript 代码片段的缩进将从头开始(也就是从 0 格缩进开始)。 |
| 73 | + |
| 74 | + ```vue title="file.vue" del={2} ins={3} |
| 75 | + <script> |
| 76 | + import Component from "./Component.vue"; |
| 77 | + import Component from "./Component.vue"; |
| 78 | + </script> |
| 79 | + ``` |
| 80 | + |
| 81 | +- 当 **检查** 后缀为 `.svelte`、`.astro` 或 `.vue` 的文件时建议关闭一些规则,以防止因为我们的部分支持而误报错误。请使用 `overrides` 选项覆盖一些规则,如下: |
| 82 | + |
| 83 | + ```json |
| 84 | + { |
| 85 | + "overrides": [ |
| 86 | + { |
| 87 | + "includes": ["**/*.svelte", "**/*.astro", "**/*.vue"], |
| 88 | + "linter": { |
| 89 | + "rules": { |
| 90 | + "style": { |
| 91 | + "useConst": "off", |
| 92 | + "useImportType": "off" |
| 93 | + }, |
| 94 | + "correctness": { |
| 95 | + "noUnusedVariables": "off", |
| 96 | + "noUnusedImports": "off" |
| 97 | + } |
| 98 | + } |
| 99 | + } |
| 100 | + } |
| 101 | + ] |
| 102 | + } |
| 103 | + ``` |
0 commit comments