@ntnyq/eslint-config
v3.10.1
Published
An opinionated ESLint config preset of ntnyq
Downloads
3,126
Maintainers
Readme
eslint-config
Flat ESLint config for JavaScript, TypeScript, Vue 2, Vue 3, Prettier.
Features
- Opinionable: single quotes, no semi, trailing comma, etc.
- Designed to work alongside with Prettier
- Respect
.gitignore
via eslint-config-flat-gitignore - Out-of-box support for TypeScript, Vue, JSON, Markdown, YAML, TOML etc.
- Strict but provides useful rules to guard your codebase
- ESLint flat config for ESLint v9.5.0+
Install
pnpm add eslint prettier typescript @ntnyq/eslint-config @ntnyq/prettier-config -D
Usage
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"
}
VSCode 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"
]
}
Lint changed files only
1. Add dependencies
pnpm add husky nano-staged -D
2. Config package.json
{
"scripts": {
"prepare": "husky"
},
"nano-staged": {
"*.{js,ts,cjs,mjs,jsx,tsx,vue,md,html,json,toml,yml,yaml}": "eslint --fix"
}
}
3. Add a Git hook
echo "nano-staged" > .husky/pre-commit
Advanced config
Check for detail in:
Config interface
export interface ConfigOptions extends ConfigOptionsInternal, OptionsExtensions {
command?: ConfigCommandOptions
comments?: ConfigCommentsOptions
ignores?: ConfigIgnoresOptions
importX?: ConfigImportXOptions
javascript?: ConfigJavaScriptOptions
jsdoc?: ConfigJsdocOptions
node?: ConfigNodeOptions
specials?: ConfigSpecialsOptions
/**
* bellow can be disabled
*/
antfu?: boolean | ConfigAntfuOptions
depend?: boolean | ConfigDependOptions
githubAction?: boolean | ConfigGitHubActionOptions
gitignore?: boolean | ConfigGitIgnoreOptions
jsonc?: boolean | ConfigJsoncOptions
markdown?: boolean | ConfigMarkdownOptions
perfectionist?: boolean | ConfigPerfectionistOptions
pinia?: boolean | ConfigPiniaOptions
prettier?: boolean | ConfigPrettierOptions
regexp?: boolean | ConfigRegexpOptions
sort?: boolean | ConfigSortOptions
stylistic?: boolean | ConfigStylisticOptions
test?: boolean | ConfigTestOptions
toml?: boolean | ConfigTomlOptions
typescript?: boolean | ConfigTypeScriptOptions
unicorn?: boolean | ConfigUnicornOptions
unocss?: boolean | ConfigUnoCSSOptions
vue?: boolean | ConfigVueOptions
yml?: boolean | ConfigYmlOptions
/**
* bellow need enable explicitly
*/
svgo?: boolean | ConfigSVGOOptions
}
Versioning policy
This project follows Semantic Versioning for releases.
Changes considered as Breaking Changes
- 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
Changes considered as Non-Breaking Changes
- Enable/disable rules and plugins (that might become stricter)
- Rules options changes
- Version bumps of dependencies