Biome を使ってみる

/

Astro と Svelte 製のサイトで、コードリンター&フォーマッターを Eslint・Prettier から Biome に変更しました。

サイトについて

.eslintrc.yml
undefined
extends:
- eslint:recommended
- plugin:astro/recommended
- plugin:svelte/recommended
# - plugin:jsx-a11y/recommended
# - plugin:import/recommended
# - plugin:import/typescript
- prettier
parser: '@typescript-eslint/parser'
parserOptions:
ecmaVersion: latest
sourceType: module
overrides:
- files:
- '*.astro'
parser: astro-eslint-parser
parserOptions:
parser: '@typescript-eslint/parser'
extraFileExtensions:
- .astro
rules: {}
- files:
- '*.svelte'
parser: svelte-eslint-parser
parserOptions:
parser: '@typescript-eslint/parser'
extraFileExtensions:
- .svelte
rules: {}
plugins:
- '@typescript-eslint'
ignorePatterns:
- './dist/**/*'
- './node_modules/**/*'
settings: {}
rules: {
no-undef: off,
no-unused-vars: warn
}
.pretterrc.yml
undefined
trailingComma: es5
tabWidth: 2
semi: false
singleQuote: true
plugins:
- prettier-plugin-astro
- prettier-plugin-svelte

Biomeとは

Web開発のためのたった1つのツールチェーン format、lintなどが一瞬で完了します!

サイトトップで『高速』を謳っているが、確かに怖いくらいに速い。

設定

undefined
npm install --save-dev --save-exact @biomejs/biome
npx @biomejs/biome init

for GitHub

biome init で作成した biome.json に下を追加

undefined
{
"vcs": {
"enabled": true,
"clientKind": "git",
"useIgnoreFile": true
}
}

for Astro

biome init で作成した biome.json に下を追加

undefined
{
"javascript": {
"globals": [
"Astro"
]
}
}

for Svelte

biome init で作成した biome.json に下を追加した。Svelte では $:double = count * 2$: {} といった様にドル記号を使った Reactive Declarations がある。これがルールに抵触するので、noUnusedLabelsnoConfusingLabels を OFF にして、.svelte ではルールを上書きしている。

undefined
{
"overrides": [
{
"include": [
"*.svelte"
],
"linter": {
"rules": {
"correctness": {
"noUnusedLabels": "off"
},
"suspicious": {
"noConfusingLabels": "off"
},
"style": {
"useConst": "off"
}
}
}
}
]
}

よかったところ、そうでもなかったところ

  • よかったところ
    • configファイル内の記述が単純になったところ
    • 大量のプラグインが不要になったことろ
    • 処理が非常に高速で一瞬で終わるところ
  • そうでもなかったところ
    • 特にない
      • 強いて言えば、まだ日が浅いので便利なプラグインが少ないところ。必要であれば作るのみ

さいごに

Biome の登場からまだ日が浅く、Eslint とそのプラグインによる非常に便利な機能はまだ足りない。しかし、設定ファイルを簡素にでき、処理も高速など、できるだけ簡単・簡潔にコードを整えたい需要には丁度良いと感じました。