Skip to content

oxlint + Prettier

This project uses oxlint for fast linting and Prettier for formatting.

packages/oxlint-config/
├── base.json # Core rules for all packages
├── react.json # React-specific rules
└── next.json # Next.js-specific rules
.prettierrc # Prettier configuration (root)
.prettierignore # Files to ignore
ConfigExportUse For
Base@repo/oxlint-config/baseTypeScript packages
React@repo/oxlint-config/reactReact libraries
Next.js@repo/oxlint-config/nextNext.js applications

In package’s package.json:

{
"scripts": {
"lint": "oxlint -c @repo/oxlint-config/next"
}
}

Base config enables:

{
"categories": {
"correctness": "error",
"suspicious": "warn",
"perf": "warn"
},
"rules": {
"no-unused-vars": "warn",
"no-console": "warn",
"eqeqeq": "error",
"no-var": "error",
"prefer-const": "warn"
}
}
// oxlint-ignore-next-line no-console
console.log("debug")

Root .prettierrc:

{
"useTabs": true,
"semi": false,
"singleQuote": false,
"trailingComma": "es5",
"printWidth": 100,
"plugins": [
"@trivago/prettier-plugin-sort-imports",
"prettier-plugin-tailwindcss"
],
"importOrder": [
"^react",
"^next",
"^@?\\w",
"^@repo/",
"^@/",
"^\\./",
"^\\.\\./
],
"importOrderSeparation": true
}
SettingValueDescription
useTabstrueUse tabs for indentation
semifalseNo semicolons
singleQuotefalseUse double quotes
trailingCommaes5Trailing commas where valid
printWidth100Line width
  • @trivago/prettier-plugin-sort-imports - Auto-sorts imports
  • prettier-plugin-tailwindcss - Sorts Tailwind classes

In .prettierignore:

node_modules
dist
.next
.turbo
bun.lock
coverage
**/convex/_generated
**/next-env.d.ts
Terminal window
# Lint all packages
bun lint
# Lint specific package
turbo lint --filter=web
# Format all files
bun format
# Check formatting (CI)
bun format:check

Install extensions:

Settings:

{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
}