Skip to content

Commit 9fd76a1

Browse files
committed
refactor: migrate from ESLint/Biome to Oxlint/Oxfmt
- Replace ESLint (9.35.0) with Oxlint (1.52.0) for linting - Replace Biome (2.2.4) with Oxfmt (0.37.0) for formatting - Remove 11 ESLint-related dependencies from catalog - Add .oxlintrc.json with 102 rules configured - Add .oxfmtrc.json migrated from biome.json settings - Update lint-staged to use oxfmt - Update CLAUDE.md documentation - Delete eslint.config.js, biome.json, and .config/ eslint configs Performance improvement: - Oxlint: 109ms for 940 files (vs ESLint ~1-2s) - Oxfmt: 491ms for 988 files (vs Biome ~875ms)
1 parent 243a118 commit 9fd76a1

File tree

196 files changed

+3628
-5366
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

196 files changed

+3628
-5366
lines changed

.config/eslint.config.mjs

Lines changed: 0 additions & 402 deletions
This file was deleted.

.oxfmtrc.json

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
{
2+
"useTabs": false,
3+
"tabWidth": 2,
4+
"printWidth": 80,
5+
"singleQuote": true,
6+
"jsxSingleQuote": false,
7+
"quoteProps": "as-needed",
8+
"trailingComma": "all",
9+
"semi": false,
10+
"arrowParens": "avoid",
11+
"bracketSameLine": false,
12+
"bracketSpacing": true,
13+
"singleAttributePerLine": false,
14+
"ignorePatterns": [
15+
"**/.cache",
16+
"**/.claude",
17+
"**/.DS_Store",
18+
"**/._.DS_Store",
19+
"**/.env",
20+
"**/.git",
21+
"**/.github",
22+
"**/.husky",
23+
"**/.type-coverage",
24+
"**/.vscode",
25+
"**/coverage",
26+
"**/dist",
27+
"**/external",
28+
"**/node_modules",
29+
"**/package.json",
30+
"**/pnpm-lock.yaml",
31+
"**/test/fixtures",
32+
"**/test/packages"
33+
]
34+
}

.oxlintrc.json

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
{
2+
"$schema": "https://raw.githubusercontent.com/oxc-project/oxc/main/npm/oxlint/configuration_schema.json",
3+
"plugins": ["typescript", "unicorn", "import"],
4+
"categories": {
5+
"correctness": "error",
6+
"suspicious": "error"
7+
},
8+
"rules": {
9+
"eslint/curly": "off",
10+
"eslint/no-await-in-loop": "off",
11+
"eslint/no-console": "off",
12+
"eslint/no-control-regex": "off",
13+
"eslint/no-empty": ["error", { "allowEmptyCatch": true }],
14+
"eslint/no-new": "error",
15+
"eslint/no-useless-catch": "off",
16+
"eslint/no-proto": "error",
17+
"eslint/no-shadow": "off",
18+
"eslint/no-unused-vars": "off",
19+
"eslint/no-var": "error",
20+
"eslint/prefer-const": "error",
21+
"eslint/preserve-caught-error": "off",
22+
"eslint/sort-imports": "off",
23+
"import/no-cycle": "off",
24+
"import/no-named-as-default": "off",
25+
"import/no-named-as-default-member": "off",
26+
"import/no-self-import": "error",
27+
"import/no-unassigned-import": "off",
28+
"typescript/array-type": ["error", { "default": "array-simple" }],
29+
"typescript/no-extraneous-class": "off",
30+
"typescript/consistent-type-assertions": [
31+
"error",
32+
{ "assertionStyle": "as" }
33+
],
34+
"typescript/no-misused-new": "error",
35+
"typescript/no-non-null-asserted-optional-chain": "off",
36+
"typescript/no-this-alias": ["error", { "allowDestructuring": true }],
37+
"unicorn/consistent-function-scoping": "off",
38+
"unicorn/no-array-for-each": "off",
39+
"unicorn/no-array-sort": "off",
40+
"unicorn/no-null": "off",
41+
"unicorn/no-array-reverse": "off",
42+
"unicorn/no-empty-file": "off",
43+
"unicorn/no-useless-fallback-in-spread": "off",
44+
"unicorn/prefer-node-protocol": "error",
45+
"unicorn/prefer-spread": "off"
46+
},
47+
"ignorePatterns": [
48+
"**/.cache",
49+
"**/.claude",
50+
"**/coverage",
51+
"**/dist",
52+
"**/external",
53+
"**/node_modules",
54+
"**/patches",
55+
"**/test/fixtures",
56+
"**/test/packages"
57+
]
58+
}

0 commit comments

Comments
 (0)