@echristian/eslint-config
A modern and opinionated ESLint configuration with TypeScript, JSX, CSS, and Markdown support.
Installation
Using npm:
npm install -D @echristian/eslint-config eslint
Using yarn:
yarn add -D @echristian/eslint-config eslint
Using pnpm:
pnpm add -D @echristian/eslint-config eslint
Usage
Create an eslint.config.js
file in your project root:
import eslintConfig from "@echristian/eslint-config";
export default eslintConfig({
});
Configuration Options
The configuration function accepts an options object with the following structure:
interface ESLintConfigOptions {
ignores?: Array<string>;
typescript?: {
options?: {
typeChecked?: boolean;
};
};
react?: {
enabled?: boolean;
options?: {
typeChecked?: boolean;
};
};
reactHooks?: {
enabled: boolean;
};
jsx?: {
enabled?: boolean;
a11y?: boolean;
};
markdown?: {
enabled?: boolean;
options?: {
language?: "commonmark" | "gfm";
frontMatter?: "yaml" | "toml" | "json" | false;
};
};
prettier?: {
experimentalOperatorPosition?: "start" | "end";
experimentalTernaries?: boolean;
semi?: boolean;
};
packageJson?: {
package?: boolean;
};
}
Example Configurations
Basic TypeScript Project
import eslintConfig from "@echristian/eslint-config";
export default eslintConfig({
ignores: ["dist/"],
});
TypeScript Project without Type Checking
import eslintConfig from "@echristian/eslint-config";
export default eslintConfig({
typescript: {
options: {
typeChecked: false,
},
},
});
React Project with Hooks
import eslintConfig from "@echristian/eslint-config";
export default eslintConfig({
react: {
enabled: true,
},
reactHooks: {
enabled: true,
},
jsx: {
enabled: true,
},
});
Full-Stack Project with CSS
import eslintConfig from "@echristian/eslint-config";
export default eslintConfig({
ignores: ["dist/", "build/"],
react: {
enabled: true,
},
reactHooks: {
enabled: true,
},
jsx: {
enabled: true,
},
css: {
enabled: true,
},
});
Documentation Project with Markdown
import eslintConfig from "@echristian/eslint-config";
export default eslintConfig({
markdown: {
enabled: true,
options: {
language: "gfm",
frontMatter: "yaml",
},
},
});
Complete Project with All Features
import eslintConfig from "@echristian/eslint-config";
export default eslintConfig({
ignores: ["dist/", "build/"],
react: {
enabled: true,
},
reactHooks: {
enabled: true,
},
jsx: {
enabled: true,
},
markdown: {
enabled: true,
options: {
language: "gfm",
frontMatter: "yaml",
},
},
});
Dependencies
This config includes the following major dependencies:
@eslint/js
: Core ESLint rules
@eslint/json
: JSON support
@eslint/css
: CSS support
@eslint/markdown
: Markdown support
typescript-eslint
: TypeScript support
@stylistic/eslint-plugin
: Style-related rules
eslint-plugin-unused-imports
: Unused imports management
eslint-plugin-perfectionist
: Additional best practices
eslint-plugin-prettier
: Prettier integration
eslint-plugin-regexp
: Regular expression linting
eslint-plugin-de-morgan
: Logical expression optimization
eslint-plugin-package-json
: Package.json validation
eslint-plugin-react-hooks
: React Hooks linting rules
@eslint-react/eslint-plugin
: React component linting
License
MIT - See LICENSE for more information.