@ntnyq/eslint-config
TypeScript icon, indicating that this package has built-in type declarations

3.9.4 • Public • Published

eslint-config

Flat ESLint config for JavaScript, TypeScript, Vue 2, Vue 3, Prettier.

CI NPM DOWNLOADS NPM VERSION LICENSE

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 {
  command?: ConfigCommandOptions
  comments?: ConfigCommentsOptions
  ignores?: ConfigIgnoresOptions
  importX?: ConfigImportXOptions
  javascript?: ConfigJavaScriptOptions
  jsdoc?: ConfigJsdocOptions
  node?: ConfigNodeOptions
  specials?: ConfigSpecialsOptions

  /**
   * bellow can be disabled
   */
  antfu?: boolean | ConfigAntfuOptions
  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
}

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

Credits

License

MIT License © 2023-PRESENT ntnyq

Package Sidebar

Install

npm i @ntnyq/eslint-config

Weekly Downloads

652

Version

3.9.4

License

MIT

Unpacked Size

1.71 MB

Total Files

7

Last publish

Collaborators

  • ntnyq