UNPKG

@coderwyd/eslint-config

Version:
209 lines (167 loc) 4.01 kB
# @coderwyd/eslint-config [![release status](https://github.com/coderwyd/eslint-config/actions/workflows/release.yml/badge.svg)](https://github.com/coderwyd/eslint-config/actions/workflows/release.yml) [![npm](https://img.shields.io/npm/v/@coderwyd/eslint-config.svg)](https://npmjs.org/package/@coderwyd/eslint-config) [![downloads](https://img.shields.io/npm/dm/@coderwyd/eslint-config.svg)](https://npmjs.org/package/@coderwyd/eslint-config) ## Feature - 🛠️ Auto fix for formatting - ✨ Support Vue, React, Svelte. - 🎯 Designed to work with TypeScript, Vue out-of-box - 🏆 Reasonable defaults, best practices, only one-line of config ## Usage ### Install ```bash pnpm i -D eslint @coderwyd/eslint-config ``` ### Create config file ```js // eslint.config.js import { defineConfig } from '@coderwyd/eslint-config' export default defineConfig() ``` ### Add script for package.json For example: ```json { "scripts": { "lint": "eslint .", "lint:fix": "eslint . --fix" } } ``` ## VS Code support (auto fix) Add the following settings to your `.vscode/settings.json`: ```jsonc { "prettier.enable": true, "editor.formatOnSave": false, // Auto fix "editor.codeActionsOnSave": { "source.fixAll": "explicit", "source.organizeImports": "never", }, } ``` ### Lint Staged If you want to apply lint and auto-fix before every commit, you can add the following to your `package.json`: ```json { "simple-git-hooks": { "pre-commit": "pnpm lint-staged" }, "lint-staged": { "*": "eslint --fix" } } ``` and then ```bash npm i -D lint-staged simple-git-hooks ``` ## Options ### interface Options ```ts interface OptionsConfig extends OptionsComponentExts { /** * The current working directory * * @default process.cwd() */ cwd?: string /** * Enable gitignore support. * * Passing an object to configure the options. * * @see https://github.com/antfu/eslint-config-flat-gitignore * @default true */ gitignore?: boolean | FlatGitignoreOptions /** * Core rules. Can't be disabled. */ javascript?: OptionsOverrides /** * Enable TypeScript support. * * Passing an object to enable TypeScript Language Server support. * * @default auto-detect based on the dependencies */ typescript?: boolean | OptionsTypescript /** * Enable test support. * * @default true */ test?: boolean | OptionsOverrides /** * Enable Vue support. * * @default auto-detect based on the dependencies */ vue?: boolean | OptionsVue /** * Enable JSONC support. * * @default true */ jsonc?: boolean | OptionsOverrides /** * Enable react rules. * * Requires installing: * - `@eslint-react/eslint-plugin` * - `eslint-plugin-react-hooks` * - `eslint-plugin-react-refresh` * * @default false */ react?: boolean | OptionsOverrides /** * Enable svelte rules. * * Requires installing: * - `eslint-plugin-svelte` * * @default false */ svelte?: boolean | OptionsOverrides /** * Enable tainwindcss rules. * * @default auto-detect based on the dependencies */ tailwindcss?: boolean | OptionsOverrides /** * Enable unocss rules. * * Requires installing: * - `@unocss/eslint-plugin` * * @default false */ unocss?: boolean | OptionsUnoCSS /** * Enable regexp rules. * * @see https://ota-meshi.github.io/eslint-plugin-regexp/ * @default true */ regexp?: boolean | (OptionsRegExp & OptionsOverrides) /** * Control to disable some rules in editors. * @default auto-detect based on the process.env */ isInEditor?: boolean /** * Automatically rename plugins in the config. * * @default true */ autoRenamePlugins?: boolean } ``` ## Thanks This project is based on [@antfu/eslint-config](https://github.com/antfu/eslint-config) ## License [MIT](./LICENSE) License © 2023-PRESENT [Donny Wang](https://github.com/coderwyd)