mcpField
B
biome-js

biome-js

github.com/paulrberg开发1021.1k 次安装今天更新
代码仓库

关于 biome-js

biome-js 是一份基于 Sablier 项目实践的 BiomeJS 配置指南,面向维护 JavaScript、TypeScript 和前端项目的开发者。内容涵盖共享配置继承、覆盖规则、Git 钩子及 Biome v2.4+ 注意事项。

主要功能

  1. 01共享配置与 monorepo 继承
  2. 02文件包含模式与规则覆盖
  3. 03测试及生成文件配置建议
  4. 04lint-staged 提交钩子示例
  5. 05Biome v2.4+ 配置说明

适用场景

  1. 01为库或前端项目设置 Biome
  2. 02在 monorepo 中组织配置
  3. 03为测试和生成代码调整规则
  4. 04配置提交时的格式与检查

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/paulrberg/agent-skills --skill biome-js

安装后在 Claude Code 中输入/biome-js确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

examples/
base-config.jsonc
lint-staged.js
ui-config.jsonc

详细介绍

BiomeJS 技能

根据 Sablier 项目模式提供的 BiomeJS 配置快速指南。

核心概念

扩展共享配置

通过 npm 包导出扩展共享配置。使用该配置的项目必须始终提供自己的 files.includes:

{
  "$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
  "extends": ["@sablier/devkit/biome"],
  "files": {
    "includes": ["**/*.{js,json,jsonc,ts}", "!node_modules/**/*"]
  }
}

对于 UI 项目,同时扩展 base 和 ui 配置:

{
  "extends": ["@sablier/devkit/biome/base", "@sablier/devkit/biome/ui"],
  "files": {
    "includes": ["**/*.{css,js,jsx,json,jsonc,ts,tsx}"]
  }
}
Monorepo 继承

在 monorepo 中,工作区配置通过 "//" 继承根配置:

// packages/my-package/biome.jsonc
{
  "extends": ["//"],
  "overrides": [
    // package-specific overrides
  ]
}
文件包含模式

始终显式指定 files.includes。常见模式:

项目类型模式
库**/*.{js,json,jsonc,ts}
UI/前端**/*.{css,js,jsx,json,jsonc,ts,tsx}
含 GraphQL**/*.{css,graphql,js,jsx,json,jsonc,ts,tsx}

排除项:!node_modules/**/*、!**/generated、!dist

常见覆盖配置

测试文件

放宽测试文件中的严格规则:

{
  "overrides": [
    {
      "includes": ["**/tests/**/*.ts", "**/*.test.ts"],
      "linter": {
        "rules": {
          "style": {
            "noNonNullAssertion": "off"
          },
          "suspicious": {
            "noExplicitAny": "off"
          }
        }
      }
    }
  ]
}
生成文件/ABI 文件

禁用生成代码的排序和紧凑格式化:

{
  "overrides": [
    {
      "includes": ["**/abi/**/*.ts", "**/generated/**/*.ts"],
      "assist": {
        "actions": {
          "source": {
            "useSortedKeys": "off"
          }
        }
      },
      "javascript": {
        "formatter": {
          "expand": "never"
        }
      }
    }
  ]
}
导入限制

对指定模块强制使用 barrel 导入:

{
  "overrides": [
    {
      "includes": ["src/**/*.{ts,tsx}"],
      "linter": {
        "rules": {
          "correctness": {
            "noRestrictedImports": {
              "level": "error",
              "options": {
                "paths": {
                  "@/core": "Import from @/core (barrel) instead of subpaths"
                }
              }
            }
          }
        }
      }
    }
  ]
}

关键规则参考

规则默认值原因
noFloatingPromiseserror未处理的 Promise 会导致错误
noUnusedImportsoff开发期间允许,提交前检查
noUnusedVariableserror保持代码整洁
useImportTypewarn (separatedType)显式导入类型
useSortedKeyson保持对象键顺序一致
useSortedClasseswarn (UI)对 Tailwind 类排序
useFilenamingConventionkebab/camel/Pascal命名方式灵活
noVoidoff对 useEffect 回调很有用
useTemplateoff允许字符串拼接

Git 钩子集成

Lint-Staged 配置

提交前钩子的标准模式:

// .lintstagedrc.js
module.exports = {
  "*.{json,jsonc,ts,tsx}": "bun biome check --write",
  "*.{md,yml,yaml}": "bun prettier --cache --write",
  "*.{ts,tsx}": "bun biome check --write --only=correctness/noUnusedImports",
};

单独运行的 noUnusedImports 检查仅在提交时执行导入清理,不会在开发期间执行。

UI 专用配置

对于使用 Tailwind CSS 的前端项目:

{
  "css": {
    "parser": {
      "tailwindDirectives": true
    }
  },
  "assist": {
    "actions": {
      "source": {
        "useSortedAttributes": "on"
      }
    }
  },
  "linter": {
    "rules": {
      "nursery": {
        "useSortedClasses": {
          "fix": "safe",
          "level": "warn",
          "options": {
            "attributes": ["classList"],
            "functions": ["clsx", "cva", "cn", "tv", "tw"]
          }
        }
      }
    }
  }
}

Biome v2.4.0+ 会自动为 *.module.css 启用 CSS Modules 解析,因此通常不需要显式设置 "cssModules": true,除非项目需要非标准行为。

Biome v2.4+ 说明

  • biome check 和 biome ci 现在支持 --only 和 --skip,可针对特定规则或操作运行。
  • biome check --write 现在在应用修复时也会进行格式化。
  • 配置查找现在也支持隐藏文件:.biome.json 和 .biome.jsonc。
  • 配置查找现在也支持用户配置目录(例如,Linux/macOS 上的 $HOME/.config/biome 或等效目录)。
  • 新的格式化选项 formatter.trailingNewline 可禁用末尾换行符的插入。
  • HTML 格式化器的行为在 v2.4.0 中发生了显著变化;如果启用了格式化器支持,HTML/Vue/Svelte/Astro 文件可能会出现较大的差异。

故障排除

常见问题

“No files matched”:检查 files.includes 模式是否匹配你的文件结构。

规则冲突:覆盖配置按顺序应用;后面的覆盖配置优先级更高。

架构错误:使用本地架构引用以获得 IDE 支持:

"$schema": "./node_modules/@biomejs/biome/configuration_schema.json"
Biome 与 Prettier

Biome 可处理 JS/TS/JSON/CSS 格式化。以下文件请使用 Prettier:

  • Markdown(.md、.mdx)
  • YAML(.yml、.yaml)

其他资源

示例

./examples/ 中的可运行示例:

  • ./examples/base-config.jsonc - 最简库配置
  • ./examples/ui-config.jsonc - 使用 Tailwind 的前端项目
  • ./examples/lint-staged.js - 提交前钩子配置
完整文档

如需了解高级功能、迁移或完整规则参考,请通过 Context7 MCP 查阅 Biome 官方文档:

Use context7 to fetch Biome documentation for [specific topic]

对于此处未涵盖的功能,请将 biomejs.dev 上的官方文档作为最后的参考来源。

评论

支持 Markdown