imranbarbhuiya / eslint-config-mahir

The ultimate ESLint shareable config
MIT License
4 stars 1 forks source link
eslint hacktoberfest javascript jsx nodejs prettier typescript

Mahir ESLint Config

The ultimate ESLint shareable config. This config includes all of the ESLint rules that I use in my projects.

[!Important] This is a highly opinionated config. It's based on my personal preferences and the way I write code. I don't recommend using this config as is as I'll update it based on my preferences without any notice.


npm version npm downloads

Installation

npm install --save-dev eslint eslint-config-mahir

Usage

Add in your eslint.config.js (for esm projects) or eslint.config.mjs

import common from 'eslint-config-mahir/common';
import node from 'eslint-config-mahir/node';
import module from 'eslint-config-mahir/module';
import typescript from 'eslint-config-mahir/typescript';
import jsx from 'eslint-config-mahir/jsx';
import react from 'eslint-config-mahir/react';
import next from 'eslint-config-mahir/next';
import mdx from 'eslint-config-mahir/mdx';
import edge from 'eslint-config-mahir/edge';
import jsdoc from 'eslint-config-mahir/jsdoc';
import tsdoc from 'eslint-config-mahir/tsdoc';
import native from 'eslint-config-mahir/native';

export default [
    ...common,
    ...node,
    ...module,
    ...typescript,
    ...jsx,
    ...react, // when using react, you can omit jsx as it's already included with react
    ...next,
    ...mdx,
    ...edge,
    ...jsdoc,
    ...tsdoc, // when using tsdoc, you can omit jsdoc as it's already included with tsdoc
    ...native, // when using native, you can omit react as it's already included with native
];

You can remove any of the configs you don't need.

Note:

For typescript users, typed linting is done via projectService. You can learn more about it from https://typescript-eslint.io/getting-started/typed-linting/#faqs and customize it as per your need.

/**
 * @type {import('@typescript-eslint/utils').TSESLint.FlatConfig.ConfigArray}
 */
export default [
    ...
    {
    languageOptions: {
        parserOptions: {
            projectService: {
                allowDefaultProject: [
                    'files-outside-tsconfig.json',
                ],
                defaultProject: 'tsconfig.json',
            },
            tsconfigRootDir: process.cwd(),
        },
    },
]

Warning: If you are using both mdx and typescript config, make sure add files to avoid conflicts

/**

Configs

This package contains eslint config for

Contributors ✨

Thanks goes to these wonderful people: