Skip to content
UniKit

ESLint config generator

Build an .eslintrc.json or eslint.config.js template by ticking TypeScript, React, Vue, Node, browser, Jest / Vitest, Prettier compatibility and import sorting, with a live preview you can copy.

Runs in your browserEvery computation happens in your browser — your data never leaves this device.

Rule sets

Tick the languages, frameworks and tools your project uses — the config updates as you type.

Config format

Generated config

File nameeslint.config.js
Rule sets selected3
import js from '@eslint/js';
import globals from 'globals';
import tseslint from 'typescript-eslint';
import configPrettier from 'eslint-config-prettier';

export default [
  { ignores: ["dist","node_modules"] },
  js.configs.recommended,
  ...tseslint.configs.recommended,
  {
    languageOptions: {
      ecmaVersion: 'latest',
      sourceType: 'module',
      globals: {
        ...globals.browser,
      },
    },
    rules: {
      '@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
    },
  },
  configPrettier,
];

What this tool does

  • Bootstrap ESLint for a new project without rereading the docs: tick your stack and get a working eslint.config.js or .eslintrc.json.
  • Migrate an old project from .eslintrc to flat config: export the current settings in legacy mode, then generate the new flat skeleton.
  • Freeze your team conventions — TypeScript, Prettier compatibility, import sorting, ignored folders — and commit the result instead of letting everyone invent their own setup.
  • Add rules for one environment only: tick Jest or Vitest and paste just that block into your existing config.

Example

Input

Format legacy (.eslintrc.json), TypeScript + browser + Prettier compatibility ticked, ignores dist and node_modules

Output

{
  "root": true,
  "env": {
    "es2022": true,
    "browser": true
  },
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended",
    "prettier"
  ],
  "parser": "@typescript-eslint/parser",
  "parserOptions": {
    "ecmaVersion": "latest",
    "sourceType": "module"
  },
  "plugins": [
    "@typescript-eslint"
  ],
  "rules": {
    "@typescript-eslint/no-unused-vars": [
      "warn",
      {
        "argsIgnorePattern": "^_"
      }
    ]
  },
  "ignorePatterns": [
    "dist",
    "node_modules"
  ]
}

With the same ticks but flat config selected, you get an eslint.config.js that imports typescript-eslint, globals and eslint-config-prettier.

Frequently asked questions

Should I use flat config or .eslintrc?

Flat config (eslint.config.js) is the default from ESLint 9, so use it for new projects. Only fall back to .eslintrc.json on ESLint 8 or when a plugin you need has not shipped flat config support yet.

What does the Prettier compatibility option actually do?

It pulls in eslint-config-prettier (configPrettier in flat, "prettier" in the legacy extends list), which turns off formatting rules such as indent, quotes and semi that fight with Prettier. It does not run Prettier — formatting still happens through the prettier command.

Why can ignore entries not start with / or contain spaces?

Flat config matches ignores as relative paths or globs, so /dist is treated as an absolute path and silently never matches; paths with spaces are ambiguous in both JSON and globs. The tool rejects them and asks for dist or build/** instead.

Is the generated config ready to run?

The syntax is complete and runnable, but you still have to install the plugins: ticking TypeScript means installing eslint plus typescript-eslint (or @typescript-eslint/parser and @typescript-eslint/eslint-plugin for the legacy form). The tool does not pick a package manager or touch package.json.

Is anything uploaded?

No. Everything is assembled in the browser, the page makes no requests, and the text only lives in the current tab — copy it before you leave.

Keywords:eslinteslint configflat configeslintrctypescript-eslinteslint 配置代码检查lint 规则eslint 生成器前端工程化

Related tools