Skip to main content
The @zayne-labs/eslint-config package exports individual config functions that can be used directly if you prefer more granular control over your ESLint configuration.

Core Configs

javascript()

Core JavaScript ESLint configuration with recommended rules.
import { javascript } from "@zayne-labs/eslint-config";

export default [
  ...await javascript({
    overrides: {
      "no-console": "warn",
    },
  }),
];
options
object
Key Features:
  • ECMAScript latest with module support
  • Browser and Node.js globals
  • Strict error detection rules
  • Enforces modern JavaScript patterns
  • Complexity limits (max depth: 2, complexity: 50)
Notable Rules:
  • no-console: Error (allows warn, error, info, trace)
  • prefer-const: Error with destructuring support
  • no-var: Error
  • eqeqeq: Error (always, except for null)
  • curly: Error (multi-line)

typescript()

TypeScript ESLint configuration with optional type-aware rules.
import { typescript } from "@zayne-labs/eslint-config";

export default [
  ...await typescript({
    tsconfigPath: "./tsconfig.json",
    isTypeAware: true,
    stylistic: true,
  }),
];
options
object
Key Features:
  • Strict or strict-type-checked presets
  • Type-aware rules when tsconfig provided
  • Stylistic TypeScript rules
  • Component extension support
Notable Rules:
  • ts-eslint/consistent-type-definitions: Type aliases preferred
  • ts-eslint/array-type: Array-simple style
  • ts-eslint/no-unused-vars: Warning with underscore prefix support
  • ts-eslint/prefer-nullish-coalescing: Error (ignores conditional tests)
  • ts-eslint/no-import-type-side-effects: Error

jsx()

JSX-specific linting rules with optional accessibility support.
import { jsx } from "@zayne-labs/eslint-config";

export default [
  ...await jsx({
    a11y: true,
  }),
];
options
object

ignores()

Configure global ignore patterns.
import { ignores } from "@zayne-labs/eslint-config";

export default [
  ...ignores(["dist", "build", ".cache"]),
];
patterns
string[] | ((originals: string[]) => string[])
Ignore patterns to add, or a function to transform the default patterns.

gitIgnores()

Automatically use .gitignore patterns for ESLint.
import { gitIgnores } from "@zayne-labs/eslint-config";

export default [
  ...await gitIgnores(),
];
options
FlatGitignoreOptions

Framework Configs

react()

Comprehensive React linting with hooks, compiler, and refresh support.
import { react } from "@zayne-labs/eslint-config";

export default [
  ...await react({
    typescript: true,
    compiler: true,
    refresh: true,
    nextjs: true,
  }),
];
options
object
Required Plugins:
  • @eslint-react/eslint-plugin
  • eslint-plugin-react-hooks
  • eslint-plugin-react-refresh
  • eslint-plugin-react-you-might-not-need-an-effect
  • @next/eslint-plugin-next (if Next.js is used)

vue()

Vue 2/3 linting with SFC block support.
import { vue } from "@zayne-labs/eslint-config";

export default [
  ...await vue({
    vueVersion: 3,
    typescript: true,
    stylistic: true,
  }),
];
options
object

solid()

SolidJS linting support.
import { solid } from "@zayne-labs/eslint-config";

export default [
  ...await solid({
    typescript: true,
  }),
];
options
object

astro()

Astro framework linting.
import { astro } from "@zayne-labs/eslint-config";

export default [
  ...await astro({
    typescript: true,
  }),
];
options
object

Style & Formatting

stylistic()

Stylistic formatting rules via @stylistic/eslint-plugin.
import { stylistic } from "@zayne-labs/eslint-config";

export default [
  ...await stylistic({
    indent: 2,
    quotes: "single",
    jsx: true,
  }),
];
options
object

perfectionist()

Sorting and ordering rules via eslint-plugin-perfectionist.
import { perfectionist } from "@zayne-labs/eslint-config";

export default [
  ...await perfectionist({
    overrides: {
      "perfectionist/sort-imports": "error",
    },
  }),
];
options
object

File Format Support

jsonc()

JSON/JSONC linting support.
import { jsonc } from "@zayne-labs/eslint-config";

export default [
  ...await jsonc(),
];

sortPackageJson()

Automatically sort package.json files.
import { sortPackageJson } from "@zayne-labs/eslint-config";

export default [
  ...sortPackageJson(),
];

sortTsconfig()

Automatically sort tsconfig.json files.
import { sortTsconfig } from "@zayne-labs/eslint-config";

export default [
  ...sortTsconfig(),
];

yaml()

YAML linting support.
import { yaml } from "@zayne-labs/eslint-config";

export default [
  ...await yaml({ stylistic: true }),
];

toml()

TOML linting support.
import { toml } from "@zayne-labs/eslint-config";

export default [
  ...await toml({ stylistic: true }),
];

markdown()

Markdown code block linting.
import { markdown } from "@zayne-labs/eslint-config";

export default [
  ...await markdown({ componentExts: ["vue"] }),
];

Code Quality

imports()

Import/export linting rules.
import { imports } from "@zayne-labs/eslint-config";

export default [
  ...await imports({
    typescript: true,
    stylistic: true,
  }),
];

node()

Node.js specific rules with optional security.
import { node } from "@zayne-labs/eslint-config";

export default [
  ...await node({
    type: "app",
    security: true,
  }),
];

unicorn()

eslint-plugin-unicorn rules for code quality.
import { unicorn } from "@zayne-labs/eslint-config";

export default [
  ...await unicorn({ type: "lib" }),
];

jsdoc()

JSDoc linting and validation.
import { jsdoc } from "@zayne-labs/eslint-config";

export default [
  ...await jsdoc({ stylistic: true }),
];

comments()

ESLint comment directive validation.
import { comments } from "@zayne-labs/eslint-config";

export default [
  ...await comments({ type: "app" }),
];

Utility Configs

pnpm()

pnpm workspace and catalogs support.
import { pnpm } from "@zayne-labs/eslint-config";

export default [
  ...await pnpm({
    catalogs: true,
    sort: true,
  }),
];

expo()

Expo-specific rules.
import { expo } from "@zayne-labs/eslint-config";

export default [
  ...await expo(),
];

tanstack()

TanStack Query and Router linting.
import { tanstack } from "@zayne-labs/eslint-config";

export default [
  ...await tanstack({
    query: true,
    router: true,
  }),
];

tailwindcssBetter()

Tailwind CSS class name linting.
import { tailwindcssBetter } from "@zayne-labs/eslint-config";

export default [
  ...await tailwindcssBetter({
    settings: {
      callees: ["cn", "clsx"],
    },
  }),
];

depend()

Dependency management rules.
import { depend } from "@zayne-labs/eslint-config";

export default [
  ...await depend(),
];

Usage Example

Combine individual configs for full control:
eslint.config.js
import {
  javascript,
  typescript,
  react,
  stylistic,
  imports,
  jsonc,
} from "@zayne-labs/eslint-config";

export default [
  ...await javascript(),
  ...await typescript({
    tsconfigPath: "./tsconfig.json",
    isTypeAware: true,
  }),
  ...await react({
    nextjs: true,
    compiler: true,
  }),
  ...await stylistic({
    indent: 2,
    quotes: "single",
    jsx: true,
  }),
  ...await imports({
    typescript: true,
    stylistic: true,
  }),
  ...await jsonc(),
  {
    files: ["**/*.tsx"],
    rules: {
      "react-x/no-clone-element": "error",
    },
  },
];

Build docs developers (and LLMs) love