Skip to content

Configs

@ntnyq/eslint-config provides a collection of composable ESLint configurations for different file types and use cases. All configs are automatically enabled based on your project structure, or you can enable/disable them manually.

Config Status

Enabled by Default

These configs are enabled automatically when relevant files are detected in your project:

ConfigDescriptionAuto-detect
JavaScriptBase JavaScript rulesAlways
TypeScriptTypeScript support and rules*.ts, *.tsx files
VueVue 3 SFC linting*.vue files
JSON/JSONCJSON/JSONC linting*.json, *.jsonc files
MarkdownMarkdown linting*.md files
YAMLYAML linting*.yaml, *.yml files
TOMLTOML linting*.toml files
GitignoreRespect .gitignore patterns.gitignore exists
IgnoresCommon ignore patternsAlways
NodeNode.js rulesAlways
Import XImport/export lintingAlways
UnicornQuality/style rulesAlways
PerfectionistSorting and formattingAlways
AntfuAnthony Fu's custom rulesAlways
ESLint CommentsESLint directive commentsAlways
CommandMagic ESLint commandsAlways

Disabled by Default

These configs must be explicitly enabled in your configuration:

ConfigDescriptionEnable with
AstroAstro component lintingastro: true
SvelteSvelte component lintingsvelte: true
SVGOSVG optimization lintingsvgo: true
HTMLHTML file lintinghtml: true
PiniaPinia store rulespinia: true
PNPMPNPM workspace lintingpnpm: true
TestTest framework rulesAuto-detect test files
ESLint PluginRules for ESLint plugin developmenteslintPlugin: true

Usage

Enable/Disable Configs

js
import { defineESLintConfig } from '@ntnyq/eslint-config'

export default defineESLintConfig({
  // Enable optional configs
  svgo: true,
  astro: true,

  // Disable default configs
  jsdoc: false,
  unicorn: false,
})

Configure Options

Each config can accept options:

js
import { defineESLintConfig } from '@ntnyq/eslint-config'

export default defineESLintConfig({
  typescript: {
    tsconfigPath: './tsconfig.json',
    overrides: {
      '@typescript-eslint/no-unused-vars': 'warn',
    },
  },
  vue: {
    sfcBlocks: true,
    overrides: {
      'vue/multi-word-component-names': 'off',
    },
  },
})

Config Interface

The complete TypeScript interface for configuration options:

ts
export interface ConfigOptions {
  /**
   * Shareable options
   */
  shareable?: OptionsShareable

  /**
   * Configs enabled by default
   */
  command?: ConfigCommandOptions
  eslintComments?: ConfigESLintCommentsOptions
  ignores?: ConfigIgnoresOptions
  javascript?: ConfigJavaScriptOptions
  node?: ConfigNodeOptions

  /**
   * Configs below can be disabled
   */
  antfu?: boolean | ConfigAntfuOptions
  deMorgan?: boolean | ConfigDeMorganOptions
  depend?: boolean | ConfigDependOptions
  githubAction?: boolean | ConfigGitHubActionOptions
  gitignore?: boolean | ConfigGitIgnoreOptions
  importX?: boolean | ConfigImportXOptions
  jsdoc?: boolean | ConfigJsdocOptions
  jsonc?: boolean | ConfigJsoncOptions
  markdown?: boolean | ConfigMarkdownOptions
  ntnyq?: boolean | ConfigNtnyqOptions
  perfectionist?: boolean | ConfigPerfectionistOptions
  pinia?: boolean | ConfigPiniaOptions
  prettier?: boolean | ConfigPrettierOptions
  regexp?: boolean | ConfigRegexpOptions
  sort?: boolean | ConfigSortOptions
  specials?: boolean | ConfigSpecialsOptions
  test?: boolean | ConfigTestOptions
  toml?: boolean | ConfigTomlOptions
  typescript?: boolean | ConfigTypeScriptOptions
  unicorn?: boolean | ConfigUnicornOptions
  unocss?: boolean | ConfigUnoCSSOptions
  vue?: boolean | ConfigVueOptions
  yml?: boolean | ConfigYmlOptions

  /**
   * Configs below are disabled by default
   */
  astro?: boolean | ConfigAstroOptions
  html?: boolean | ConfigHtmlOptions
  pnpm?: boolean | ConfigPnpmOptions
  oxfmt?: boolean | ConfigOxfmtOptions
  svelte?: boolean | ConfigSvelteOptions
  svgo?: boolean | ConfigSVGOOptions
  eslintPlugin?: boolean | ConfigESLintPluginOptions
}

For detailed type definitions, see:

Config Details

Click on each config name in the sidebar to see:

  • Plugins used
  • Available options
  • Default configuration
  • Implementation source

See Also