@ebarooni/eslint-config

1.3.0 • Public • Published

@ebarooni/eslint-config

A shareable and extensible ESLint configuration for JavaScript, TypeScript, Angular, Markdown, and JSON projects.

Prerequisites

Ensure the required peer dependencies are installed:

npm install -D eslint @eslint/js @eslint/markdown @eslint/json typescript typescript-eslint angular-eslint eslint-config-prettier eslint-plugin-promise

For TypeScript projects, consider creating a tsconfig.eslint.json file to prevent issues with project-wide type checking:

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "noEmit": true
  },
  "include": ["src", "test", "tools"]
}

Installation

To install the ESLint configuration package, run:

npm install -D @ebarooni/eslint-config

Usage

JavaScript ESLint Configuration

For JavaScript projects that don’t use TypeScript:

Ensure "type": "module" is set in package.json:

{
  "name": "my-project",
  "type": "module"
}

Then, create eslint.config.js or eslint.config.mjs:

import eb from "@ebarooni/eslint-config";

export default {
  ...eb.javascript,
  files: ["*.js", "*.mjs"],
  ignores: ["*.html"],
};

TypeScript ESLint Configuration

For TypeScript projects, extending the JavaScript configuration:

// @ts-check
import eb from "@ebarooni/eslint-config";
import tseslint from "typescript-eslint";

export default tseslint.config(...eb.typescript, {
  languageOptions: {
    parserOptions: {
      project: ["./tsconfig.eslint.json", "./packages/*/tsconfig.json"],
      tsconfigRootDir: import.meta.dirname,
    },
  },
});

Angular ESLint Configuration

For Angular projects, extending the TypeScript configuration:

// @ts-check
import eb from "@ebarooni/eslint-config";
import tseslint from "typescript-eslint";

export default tseslint.config(...eb.angular, {
  languageOptions: {
    parserOptions: {
      project: ["**/tsconfig*.json"],
      tsconfigRootDir: import.meta.dirname,
    },
  },
});

Markdown ESLint Configuration

To enable linting for Markdown files:

import eb from "@ebarooni/eslint-config";

export default {
  eb.markdown,
  files: ["*.md"]
};

JSON ESLint Configuration

To enable linting for JSON files:

import eb from "@ebarooni/eslint-config";

export default {
  eb.json,
  files: ["*.json"]
};

Helper Scripts

To simplify linting and fixing errors, add these scripts to your package.json:

{
  "scripts": {
    "eslint": "npx eslint",
    "eslint:check": "npm run eslint -- .",
    "eslint:fix": "npm run eslint . --fix"
  }
}

Run these commands:

  • Check for linting issues:
    npm run eslint:check
  • Automatically fix linting errors:
    npm run eslint:fix

Customizing the Configuration

This ESLint config is extensible, allowing you to customize it for your project.

Custom Rules

To override specific rules, extend the configuration in eslint.config.js:

import eb from "@ebarooni/eslint-config";

export default {
  ...eb.typescript,
  rules: {
    "no-console": "off",
    indent: ["error", 4],
  },
};

Directory-Specific Rules

If you want different rules per directory:

import eb from "@ebarooni/eslint-config";

export default [
  {
    ...eb.javascript,
    files: ["src/**/*.js"],
  },
  {
    ...eb.typescript,
    files: ["src/**/*.ts"],
  },
  {
    ...eb.markdown,
    files: ["docs/**/*.md"],
  },
  {
    ...eb.json,
    files: ["config/**/*.json"],
  },
];

Package Sidebar

Install

npm i @ebarooni/eslint-config

Weekly Downloads

30

Version

1.3.0

License

MIT

Unpacked Size

11.1 kB

Total Files

10

Last publish

Collaborators

  • ebarooni