Flat ESLint config for JavaScript, TypeScript, Vue 2, Vue 3, Prettier.
- Opinionable: single quotes, no semi
- Designed to work alongside with Prettier
- Respect
.gitignore
via eslint-config-flat-gitignore - Out-of-box support for TypeScript, Vue, JSON, Markdown, YAML, etc.
- ESLint flat config for ESLint v9.5.0+
pnpm add eslint prettier typescript @ntnyq/eslint-config @ntnyq/prettier-config -D
Highly recommended using eslint.config.mjs
as the config file :
import { defineESLintConfig } from '@ntnyq/eslint-config'
export default defineESLintConfig()
Add scripts lint
in package.json
and config prettier:
{
"scripts": {
"lint": "eslint .",
"lint:fix": "eslint . --fix"
},
"prettier": "@ntnyq/prettier-config"
}
{
"eslint.enable": true,
"prettier.enable": true,
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
},
"editor.defaultFormatter": "esbenp.prettier-vscode",
"eslint.validate": [
"vue",
"html",
"yaml",
"toml",
"json",
"jsonc",
"json5",
"markdown",
"javascript",
"typescript",
"javascriptreact",
"typescriptreact"
]
}
pnpm add husky nano-staged -D
{
"scripts": {
"prepare": "husky"
},
"nano-staged": {
"*.{js,ts,cjs,mjs,jsx,tsx,vue,md,html,json,toml,yml,yaml}": "eslint --fix"
}
}
echo "nano-staged" > .husky/pre-commit
Check for detail in:
export interface ConfigOptions {
ignores?: ConfigIgnoresOptions
sort?: boolean | ConfigSortOptions
command?: boolean | ConfigCommandOptions
gitignore?: boolean | ConfigGitIgnoreOptions
imports?: ConfigImportsOptions
node?: ConfigNodeOptions
javascript?: ConfigJavaScriptOptions
typescript?: boolean | ConfigTypeScriptOptions
unicorn?: boolean | ConfigUnicornOptions
prettier?: boolean | ConfigPrettierOptions
perfectionist?: boolean | ConfigPerfectionistOptions
/**
* @internal
*/
unusedImports?: boolean | ConfigUnusedImportsOptions
/**
* @internal
*/
antfu?: boolean | ConfigAntfuOptions
/**
* @internal
*/
ntnyq?: boolean | ConfigNtnyqOptions
comments?: boolean | ConfigCommentsOptions
jsdoc?: boolean | ConfigJsdocOptions
unocss?: boolean | ConfigUnoCSSOptions
regexp?: boolean | ConfigRegexpOptions
jsonc?: boolean | ConfigJsoncOptions
yml?: boolean | ConfigYmlOptions
markdown?: boolean | ConfigMarkdownOptions
toml?: boolean | ConfigTomlOptions
vue?: boolean | ConfigVueOptions
test?: boolean | ConfigTestOptions
}
This project follows Semantic Versioning for releases.
- Node.js version requirement changes
- Huge refactors that might break the config
- Plugins made major changes that might break the config
- Changes that might affect most of the codebases
- Enable/disable rules and plugins (that might become stricter)
- Rules options changes
- Version bumps of dependencies