mirror of
https://github.com/zen-browser/www.git
synced 2025-07-07 17:05:32 +02:00
feat(eslint): add eslint flat config
This commit is contained in:
parent
1937be58a6
commit
01f4dac75d
16 changed files with 4607 additions and 2125 deletions
93
eslint.config.ts
Normal file
93
eslint.config.ts
Normal file
|
@ -0,0 +1,93 @@
|
|||
import { includeIgnoreFile } from "@eslint/compat";
|
||||
import type { TSESLint } from "@typescript-eslint/utils";
|
||||
import prettierConfig from "eslint-config-prettier";
|
||||
import astro from "eslint-plugin-astro";
|
||||
import { dirname, resolve } from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import tseslint from "typescript-eslint";
|
||||
|
||||
// Import modular configurations
|
||||
import { astroConfig } from "./.eslint/astro";
|
||||
import { baseConfig } from "./.eslint/base";
|
||||
import { configFilesConfig } from "./.eslint/config-files";
|
||||
import { importConfigArray } from "./.eslint/import";
|
||||
import { javascriptConfig } from "./.eslint/javascript";
|
||||
import { jsxA11yConfig } from "./.eslint/jsx-a11y";
|
||||
import { reactConfig, reactHooksConfig } from "./.eslint/react";
|
||||
import { testConfig } from "./.eslint/test";
|
||||
import { createTypescriptConfig } from "./.eslint/typescript";
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
|
||||
const tsConfigPath = resolve(__dirname, "./tsconfig.json");
|
||||
|
||||
const ignoresConfig = {
|
||||
name: "eslint/ignores",
|
||||
ignores: [
|
||||
// Build outputs
|
||||
"**/dist/**",
|
||||
"**/build/**",
|
||||
"**/.astro/**",
|
||||
"**/node_modules/**",
|
||||
|
||||
// Test outputs
|
||||
"**/coverage/**",
|
||||
"**/playwright-report/**",
|
||||
"**/test-results/**",
|
||||
|
||||
// Config files that don't need linting
|
||||
"**/*.config.js",
|
||||
"**/*.config.mjs",
|
||||
"**/wrangler.toml",
|
||||
|
||||
// Other common ignores
|
||||
"**/.next/**",
|
||||
"**/.nuxt/**",
|
||||
"**/.output/**",
|
||||
"**/.vercel/**",
|
||||
"**/.netlify/**",
|
||||
"**/public/**",
|
||||
"**/*.min.js",
|
||||
"**/*.d.ts",
|
||||
"**/CHANGELOG.md",
|
||||
"**/README.md",
|
||||
],
|
||||
} satisfies TSESLint.FlatConfig.Config;
|
||||
|
||||
const config: TSESLint.FlatConfig.ConfigArray = tseslint.config(
|
||||
// Include .gitignore patterns
|
||||
includeIgnoreFile(resolve(__dirname, ".gitignore")),
|
||||
|
||||
// Core configurations
|
||||
ignoresConfig,
|
||||
baseConfig,
|
||||
// TypeScript ecosystem
|
||||
...tseslint.configs.strict,
|
||||
...tseslint.configs.stylistic,
|
||||
createTypescriptConfig(tsConfigPath),
|
||||
|
||||
// Import management
|
||||
...importConfigArray,
|
||||
|
||||
// Framework specific
|
||||
reactConfig,
|
||||
reactHooksConfig,
|
||||
jsxA11yConfig,
|
||||
|
||||
// Astro specific
|
||||
...astro.configs.recommended,
|
||||
astroConfig,
|
||||
|
||||
// Language specific
|
||||
javascriptConfig,
|
||||
|
||||
// Special cases
|
||||
testConfig,
|
||||
configFilesConfig,
|
||||
|
||||
// Prettier integration (must be last)
|
||||
prettierConfig,
|
||||
);
|
||||
|
||||
export default config;
|
Loading…
Add table
Add a link
Reference in a new issue