Go to file
2023-08-07 15:41:19 +02:00
.github/workflows chore: add release script 2022-07-10 10:46:19 +08:00
fixtures/vitesse chore: update deps, migrate tests 2023-08-07 15:41:19 +02:00
packages chore: update deps, migrate tests 2023-08-07 15:41:19 +02:00
.eslintrc.json feat: add react and all 2020-08-12 19:24:32 +08:00
.gitignore chore: allow lock files 2019-12-12 02:21:20 +08:00
.npmrc chore: enable hoist 2023-04-03 14:43:41 +02:00
LICENSE chore: update 2022-03-11 04:46:10 +08:00
package.json chore: update deps, migrate tests 2023-08-07 15:41:19 +02:00
pnpm-lock.yaml chore: update deps, migrate tests 2023-08-07 15:41:19 +02:00
pnpm-workspace.yaml feat: add react and all 2020-08-12 19:24:32 +08:00
README.md docs: make config correct (#224) 2023-07-20 14:44:19 +02:00
tsconfig.json chore: update deps, migrate tests 2023-08-07 15:41:19 +02:00

@antfu/eslint-config

npm code style

  • Single quotes, no semi
  • Auto fix for formatting (aimed to be used standalone without Prettier)
  • Designed to work with TypeScript, Vue out-of-box
  • Lint also for json, yaml, markdown
  • Sorted imports, dangling commas
  • Reasonable defaults, best practices, only one-line of config
  • Style principle: Minimal for reading, stable for diff

Usage

Install

pnpm add -D eslint @antfu/eslint-config

Config .eslintrc

{
  "extends": "@antfu"
}

You don't need .eslintignore normally as it has been provided by the preset.

Add script for package.json

For example:

{
  "scripts": {
    "lint": "eslint .",
    "lint:fix": "eslint . --fix"
  }
}

VS Code support (auto fix)

Install VS Code ESLint extension

Add the following settings to your settings.json:

{
  "prettier.enable": false,
  "editor.formatOnSave": false,
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true,
    "source.organizeImports": false
  },

  // The following is optional.
  // It's better to put under project setting `.vscode/settings.json`
  // to avoid conflicts with working with different eslint configs
  // that does not support all formats.
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    "typescript",
    "typescriptreact",
    "vue",
    "html",
    "markdown",
    "json",
    "jsonc",
    "yaml"
  ]
}

TypeScript Aware Rules

Type aware rules are enabled when a tsconfig.eslint.json is found in the project root, which will introduce some stricter rules into your project. If you want to enable it while have no tsconfig.eslint.json in the project root, you can change tsconfig name by modifying ESLINT_TSCONFIG env.

// .eslintrc.js
const process = require('node:process')
process.env.ESLINT_TSCONFIG = 'tsconfig.json'

module.exports = {
  extends: '@antfu'
}

Lint Staged

If you want to apply lint and auto-fix before every commit, you can add the following to your package.json:

{
  "simple-git-hooks": {
    "pre-commit": "pnpm lint-staged"
  },
  "lint-staged": {
    "*": "eslint --fix"
  }
}

and then

npm i -D lint-staged simple-git-hooks

Badge

If you enjoy this code style, and would like to mention it in your project, here is the badge you can use:

[![code style](https://antfu.me/badge-code-style.svg)](https://github.com/antfu/eslint-config)

code style

FAQ

Prettier?

Why I don't use Prettier

How to lint CSS?

This config does NOT lint CSS. I personally use UnoCSS so I don't write CSS. If you still prefer CSS, you can use stylelint for CSS linting.

I prefer XXX...

Sure, you can override the rules in your .eslintrc file.

{
  "extends": "@antfu",
  "rules": {
    // your rules...
  }
}

Or you can always fork this repo and make your own.

Check Also

License

MIT License © 2019-PRESENT Anthony Fu