Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?



  • 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



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"

Config VS Code auto fix

Install VS Code ESLint extension and create .vscode/settings.json

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

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
process.env.ESLINT_TSCONFIG = 'tsconfig.json'

module.exports = {
  extends: '@antfu'

Extended Reading

Learn more about the context - Why I don't use Prettier.

Check Also


MIT License © 2019-PRESENT Anthony Fu