AgentSkillsCN

biome-to-oxc

将 JavaScript/TypeScript 项目从 Biome 迁移到 oxlint + oxfmt,并以 Prettier 作为后备方案。当用户提出“迁移到 oxlint”、“从 Biome 切换到 oxc”、“使用 oxfmt”,或希望采用 oxc 工具链进行代码 linting 与格式化时,此工具将助您轻松完成迁移。

SKILL.md
--- frontmatter
name: biome-to-oxc
description: Migrate JavaScript/TypeScript projects from Biome to oxlint + oxfmt with Prettier fallback. Use when user asks to "migrate to oxlint", "switch from biome to oxc", "use oxfmt", or wants to adopt the oxc toolchain for linting and formatting.

Biome to Oxc Migration

Migrate from Biome to oxlint (linting) + oxfmt (formatting) with Prettier for unsupported file types.

File Type Strategy

File TypeLintFormat
.ts, .tsx, .js, .jsxoxlintoxfmt
.json, .jsonc, .css-oxfmt
.md, .mdx, .astro, .yaml, .yml-Prettier

Migration Checklist

  1. Remove Biome packages - @biomejs/biome, ultracite, or similar presets
  2. Add new packages - oxlint, oxfmt, prettier, framework-specific prettier plugins if needed
  3. Delete biome.json or biome.jsonc
  4. Create .oxlintrc.json
  5. Create .prettierrc.json and .prettierignore
  6. Update build scripts - Replace biome commands with oxlint/oxfmt/prettier
  7. Update VSCode settings - Switch formatter to oxc.oxc-vscode
  8. Run format and lint - Verify everything works

Configuration Templates

.oxlintrc.json

json
{
  "$schema": "./node_modules/oxlint/configuration_schema.json",
  "plugins": ["typescript", "import", "unicorn", "oxc", "jsdoc", "promise", "node"],
  "rules": {}
}

Available plugins: eslint, react, unicorn, typescript, oxc, import, jsdoc, jest, vitest, jsx-a11y, nextjs, react-perf, promise, node, vue

Enable plugins relevant to your project. For library projects, exclude framework-specific plugins (react, vue, nextjs, jest, vitest).

.prettierrc.json

json
{
  "printWidth": 120,
  "plugins": ["prettier-plugin-astro"]
}

Add plugins as needed: prettier-plugin-astro, prettier-plugin-svelte, prettier-plugin-tailwindcss

.prettierignore

code
dist/
node_modules/
**/*.ts
**/*.tsx
**/*.js
**/*.jsx
**/*.json
**/*.css

Exclude files handled by oxfmt.

VSCode Settings

json
{
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "[javascript][typescript][javascriptreact][typescriptreact][json][jsonc][css]": {
    "editor.defaultFormatter": "oxc.oxc-vscode"
  },
  "editor.codeActionsOnSave": {
    "source.fixAll.oxc": "always"
  }
}

Rule Migration

Common Biome to oxlint rule mappings:

Biome Ruleoxlint Equivalent
noBarrelFileno-barrel-file
useConsistentTypeDefinitionsNot directly available
noUnusedVariablesno-unused-vars
noConsoleno-console

oxlint uses ESLint-compatible rule names with kebab-case.

CLI Commands

bash
# Lint with auto-fix
oxlint --fix

# Format with oxfmt (use .gitignore for ignoring)
oxfmt --write --ignore-path=.gitignore .

# Format remaining files with Prettier
prettier --write --no-error-on-unmatched-pattern "**/*.{md,mdx,astro,yaml,yml}"

Note: oxfmt reads .prettierignore by default. Use --ignore-path=.gitignore to use gitignore instead.