Skip to content

Configs

@ntnyq/eslint-config provides a collection of composable ESLint configurations for different file types and use cases. Many configs are enabled automatically based on your project structure, and you can enable or 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
TestTest framework rulesvitest in dependencies
UnoCSSUnoCSS class lintingunocss in dependencies
PrettierPrettier compatibilityprettier in dependencies
OxfmtOxfmt compatibilityoxfmt in dependencies

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
ESLint PluginRules for ESLint plugin developmenteslintPlugin: true
Unused ImportsRemove unused imports/varsunusedImports: 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
  unusedImports?: boolean | ConfigUnusedImportsOptions
  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