@kouts/eslint-config

Kouts's ESLint config
15,809 4
Install
npm install @kouts/eslint-config
Latest Version:3.1.10
License:MIT
Last Updated:Oct 19, 2026
Links: GitHub  ·  npm
Maintainer: kouts

@kouts/eslint-config

Custom ESLint and Prettier config with Vue.js support and sensible defaults

[!NOTE] This config uses the ESLint Flat config, requires Node.js ^22.13.0 || >=24, and supports ESLint 10. If you're looking for the previous version, see README_V0.md.

Installation

pnpm i -D @kouts/eslint-config eslint prettier

Usage

ESLint config

Add an eslint.config.js (or eslint.config.cjs if your project is CommonJS) that imports the config function:

import { config } from '@kouts/eslint-config'

export default [
  ...config(),
  {
    // Add custom rules here
  },
]
Customizing the config

The configuration composes neostandard with Vue, Vitest, Prettier, import checking, and project-specific rules. You can customize it by passing an object to config.

Config defaults:

Option Type Description Default
ts boolean Enable TypeScript support true
noJsx boolean Disable JSX rules true
noStyle boolean Disable style rules true
semi boolean Use semicolons false
vue boolean Enable Vue.js support true
vueVersion 2 or 3 Specify the Vue.js version 3
vitest boolean Enable Vitest support true
env string[] Additional global environments Node.js and browser
files string[] Additional patterns for neostandard to lint **/*.vue included
filesTs string[] Additional patterns for TypeScript linting []
globals string[] or object Additional global variables None
ignores string[] Additional patterns to ignore []

Example:

config({
  ts: false,
  vue: true,
  vueVersion: 3,
  vitest: false,
})

Prettier config

Create a prettier.config.js file with the following content:

import prettierConfig from '@kouts/eslint-config/prettier'

export default prettierConfig

package.json scripts

Add the following ESLint commands to your package.json for linting and autofixing:

{
  "lint": "eslint \"**/*.{vue,ts,js}\"",
  "lint-fix": "eslint --fix \"**/*.{vue,ts,js}\""
}

VS Code settings

Add the following settings to your VS Code project settings for autofix on save:

.vscode/settings.json

{
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[typescript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  }
}

Features

Vue-specific Rules

This configuration extends the ESLint plugin Vue recommended preset but makes several modifications to enhance code quality and consistency in Vue components.

Disabled Rules

  • vue/max-attributes-per-line: Turned off to allow flexibility in attribute formatting
  • vue/singleline-html-element-content-newline: Turned off for cleaner code with fewer line breaks

Strengthened Rules (set to 'error')

  • vue/attributes-order: Enforces consistent order of component attributes
  • vue/block-order: Enforces consistent order of component blocks
  • vue/no-lone-template: Prevents unnecessary template wrappers
  • vue/no-multiple-slot-args: Prevents passing multiple arguments to slots
  • vue/no-v-html: Prevents use of v-html to mitigate XSS risks
  • vue/order-in-components: Enforces consistent order of component options
  • vue/this-in-template: Prevents usage of this in templates
  • vue/require-prop-types: Requires type definitions for props
  • vue/component-name-in-template-casing: Enforces PascalCase for component names in templates
  • vue/no-static-inline-styles: Prevents inline styles in templates
  • vue/require-explicit-emits: Requires explicit emit declarations
  • vue/require-name-property: Requires components to have a name property
  • vue/html-self-closing: Enforces self-closing style for components with no content
  • vue/dot-notation: Enforces dot notation where possible in templates

Custom Vue Rules

  • kouts/vue-require-name-in-setup: Enforces that Vue components using <script setup> must have a component name.

Customizing/Disabling Vue Rules

You can customize or disable any of these rules in your ESLint config:

// eslint.config.js
import { config } from '@kouts/eslint-config'

export default [
  ...config(),
  {
    rules: {
      // Disable custom rule
      'kouts/vue-require-name-in-setup': 'off',

      // Modify strengthened Vue rules
      'vue/attributes-order': 'warn',
      'vue/no-v-html': 'off',

      // Re-enable rules that were turned off
      'vue/max-attributes-per-line': [
        'error',
        {
          singleline: { max: 3 },
          multiline: { max: 1 },
        },
      ],
    },
  },
]

License

MIT

Related Packages

eslint-plugin-vue

Official ESLint plugin for Vue.js

266,364,830 4,591
@vue/eslint-plugin

Official ESLint plugin for Vue.js

19,937 4,591
@sharkykh/eslint-plugin-vue-extra

ESLint plugin, extension for eslint-plugin-vue

15,653 0
eslint-config-ecollect-vue

eCollect's Vue.js style-guide and lint rules.

3,204 0

Version History

Version Released License
3.1.10 MIT
3.1.9 MIT
3.1.8 MIT
3.1.7 MIT
3.1.6 MIT