mirror of
https://github.com/stablyai/orca
synced 2026-04-21 14:17:16 +00:00
Replace eslint/prettier with oxlint/oxfmt, add pre-commit hooks
Swap out eslint + 6 plugins for oxlint and prettier for oxfmt (oxc toolchain). Set up husky + lint-staged to run linter and formatter on pre-commit. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
846a4dc380
commit
2d9df606c6
10 changed files with 667 additions and 1871 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -28,7 +28,7 @@ release/
|
||||||
Thumbs.db
|
Thumbs.db
|
||||||
|
|
||||||
# Lint/cache
|
# Lint/cache
|
||||||
.eslintcache
|
.oxlintcache
|
||||||
|
|
||||||
# Logs
|
# Logs
|
||||||
*.log
|
*.log
|
||||||
|
|
|
||||||
1
.husky/pre-commit
Normal file
1
.husky/pre-commit
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
pnpm exec lint-staged
|
||||||
7
.oxfmtrc.json
Normal file
7
.oxfmtrc.json
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://raw.githubusercontent.com/nicolo-ribaudo/oxc-project.github.io/refs/heads/json-schemas/oxfmt/v0.41.0/config.json",
|
||||||
|
"singleQuote": true,
|
||||||
|
"semi": false,
|
||||||
|
"printWidth": 100,
|
||||||
|
"trailingComma": "none"
|
||||||
|
}
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
out
|
|
||||||
dist
|
|
||||||
pnpm-lock.yaml
|
|
||||||
LICENSE.md
|
|
||||||
tsconfig.json
|
|
||||||
tsconfig.*.json
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
singleQuote: true
|
|
||||||
semi: false
|
|
||||||
printWidth: 100
|
|
||||||
trailingComma: none
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
import { defineConfig } from 'eslint/config'
|
|
||||||
import tseslint from '@electron-toolkit/eslint-config-ts'
|
|
||||||
import eslintConfigPrettier from '@electron-toolkit/eslint-config-prettier'
|
|
||||||
import eslintPluginReact from 'eslint-plugin-react'
|
|
||||||
import eslintPluginReactHooks from 'eslint-plugin-react-hooks'
|
|
||||||
import eslintPluginReactRefresh from 'eslint-plugin-react-refresh'
|
|
||||||
|
|
||||||
export default defineConfig(
|
|
||||||
{ ignores: ['**/node_modules', '**/dist', '**/out'] },
|
|
||||||
tseslint.configs.recommended,
|
|
||||||
eslintPluginReact.configs.flat.recommended,
|
|
||||||
eslintPluginReact.configs.flat['jsx-runtime'],
|
|
||||||
{
|
|
||||||
settings: {
|
|
||||||
react: {
|
|
||||||
version: 'detect'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
files: ['**/*.{ts,tsx}'],
|
|
||||||
plugins: {
|
|
||||||
'react-hooks': eslintPluginReactHooks,
|
|
||||||
'react-refresh': eslintPluginReactRefresh
|
|
||||||
},
|
|
||||||
rules: {
|
|
||||||
...eslintPluginReactHooks.configs.recommended.rules,
|
|
||||||
...eslintPluginReactRefresh.configs.vite.rules
|
|
||||||
}
|
|
||||||
},
|
|
||||||
eslintConfigPrettier
|
|
||||||
)
|
|
||||||
23
oxlintrc.json
Normal file
23
oxlintrc.json
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://raw.githubusercontent.com/nicolo-ribaudo/oxc-project.github.io/refs/heads/json-schemas/oxlint/v0.17.0/config.json",
|
||||||
|
"plugins": ["typescript", "react", "react-hooks", "react-perf"],
|
||||||
|
"categories": {
|
||||||
|
"correctness": "error"
|
||||||
|
},
|
||||||
|
"rules": {
|
||||||
|
"react/jsx-no-duplicate-props": "error",
|
||||||
|
"react/jsx-no-undef": "error",
|
||||||
|
"react/jsx-uses-vars": "error",
|
||||||
|
"react/no-children-prop": "error",
|
||||||
|
"react/no-danger-with-children": "error",
|
||||||
|
"react/no-direct-mutation-state": "error",
|
||||||
|
"react/no-find-dom-node": "error",
|
||||||
|
"react/no-render-return-value": "error",
|
||||||
|
"react/no-string-refs": "error",
|
||||||
|
"react/no-unescaped-entities": "error",
|
||||||
|
"react/require-render-return": "error",
|
||||||
|
"react-hooks/rules-of-hooks": "error",
|
||||||
|
"react-hooks/exhaustive-deps": "warn"
|
||||||
|
},
|
||||||
|
"ignorePatterns": ["**/node_modules", "**/dist", "**/out"]
|
||||||
|
}
|
||||||
29
package.json
29
package.json
|
|
@ -2,12 +2,13 @@
|
||||||
"name": "orca",
|
"name": "orca",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "An Electron application with React and TypeScript",
|
"description": "An Electron application with React and TypeScript",
|
||||||
"main": "./out/main/index.js",
|
|
||||||
"author": "example.com",
|
|
||||||
"homepage": "https://electron-vite.org",
|
"homepage": "https://electron-vite.org",
|
||||||
|
"author": "example.com",
|
||||||
|
"main": "./out/main/index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"format": "prettier --write .",
|
"format": "oxfmt --write .",
|
||||||
"lint": "eslint --cache .",
|
"lint": "oxlint",
|
||||||
|
"prepare": "husky",
|
||||||
"typecheck:node": "tsc --noEmit -p tsconfig.node.json --composite false",
|
"typecheck:node": "tsc --noEmit -p tsconfig.node.json --composite false",
|
||||||
"typecheck:web": "tsc --noEmit -p tsconfig.web.json --composite false",
|
"typecheck:web": "tsc --noEmit -p tsconfig.web.json --composite false",
|
||||||
"typecheck": "npm run typecheck:node && npm run typecheck:web",
|
"typecheck": "npm run typecheck:node && npm run typecheck:web",
|
||||||
|
|
@ -26,8 +27,6 @@
|
||||||
"electron-updater": "^6.3.9"
|
"electron-updater": "^6.3.9"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@electron-toolkit/eslint-config-prettier": "^3.0.0",
|
|
||||||
"@electron-toolkit/eslint-config-ts": "^3.1.0",
|
|
||||||
"@electron-toolkit/tsconfig": "^2.0.0",
|
"@electron-toolkit/tsconfig": "^2.0.0",
|
||||||
"@types/node": "^25.5.0",
|
"@types/node": "^25.5.0",
|
||||||
"@types/react": "^19.2.7",
|
"@types/react": "^19.2.7",
|
||||||
|
|
@ -36,16 +35,24 @@
|
||||||
"electron": "^41.0.2",
|
"electron": "^41.0.2",
|
||||||
"electron-builder": "^26.0.12",
|
"electron-builder": "^26.0.12",
|
||||||
"electron-vite": "^5.0.0",
|
"electron-vite": "^5.0.0",
|
||||||
"eslint": "^9.39.1",
|
"husky": "^9.1.7",
|
||||||
"eslint-plugin-react": "^7.37.5",
|
"lint-staged": "^16.4.0",
|
||||||
"eslint-plugin-react-hooks": "^7.0.1",
|
"oxfmt": "^0.41.0",
|
||||||
"eslint-plugin-react-refresh": "^0.5.2",
|
"oxlint": "^1.56.0",
|
||||||
"prettier": "^3.7.4",
|
|
||||||
"react": "^19.2.1",
|
"react": "^19.2.1",
|
||||||
"react-dom": "^19.2.1",
|
"react-dom": "^19.2.1",
|
||||||
"typescript": "^5.9.3",
|
"typescript": "^5.9.3",
|
||||||
"vite": "^7.2.6"
|
"vite": "^7.2.6"
|
||||||
},
|
},
|
||||||
|
"lint-staged": {
|
||||||
|
"*.{ts,tsx,js,jsx,mts,cts}": [
|
||||||
|
"oxlint",
|
||||||
|
"oxfmt --write"
|
||||||
|
],
|
||||||
|
"*.{json,css,html,yaml,yml,md}": [
|
||||||
|
"oxfmt --write"
|
||||||
|
]
|
||||||
|
},
|
||||||
"pnpm": {
|
"pnpm": {
|
||||||
"onlyBuiltDependencies": [
|
"onlyBuiltDependencies": [
|
||||||
"electron",
|
"electron",
|
||||||
|
|
|
||||||
2430
pnpm-lock.yaml
2430
pnpm-lock.yaml
File diff suppressed because it is too large
Load diff
|
|
@ -11,9 +11,7 @@
|
||||||
"jsx": "react-jsx",
|
"jsx": "react-jsx",
|
||||||
"baseUrl": ".",
|
"baseUrl": ".",
|
||||||
"paths": {
|
"paths": {
|
||||||
"@renderer/*": [
|
"@renderer/*": ["src/renderer/src/*"]
|
||||||
"src/renderer/src/*"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue