5.0.0 • Published 4 months ago

@skarab/eslint-config v5.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

My shared ESLint config

Installation

pnpm add -D typescript eslint @skarab/eslint-config

Basic usage

Add @skarab/eslint-config/recommended or @skarab/eslint-config/recommended-commonjs to the extends section of your ESLint configuration file.

{
  "extends": ["some-other-config-you-use", "@skarab/eslint-config/recommended"]
}

Advenced usages

This ESLint configuration is designed to be highly customizable, allowing for flexible setup options that cater to different environments and scenarios, including automatic detection of TypeScript.

Importing and Configuring

To start, in your .eslintrc.js, import the config function:

const { config } = require('@skarab/eslint-config');

Configuring options

The config function accepts an object of type ConfigOptions, enabling you to customize the ESLint setup for your project. The configuration supports automatic TypeScript detection but also allows you to explicitly enable or disable TypeScript support based on your requirements.

Here's an example of configuring the ESLint setup:

// .eslintrc.js
// ...
module.exports = config({
  ts: true,
  jsx: true,
  node: true,
  browser: false,
  type: 'module',
  ecmaVersion: 2020,
  environments: ['jest'],
  reportUnusedDisableDirectives: true,
  ignores: ['**/dist/**', '**/node_modules/**'],
});

Example Usage

Basic Configuration for Node.js

For a simple Node.js project using ECMAScript modules:

const basicConfig = config({
  node: true,
  type: 'module',
});

TypeScript Project

For a project using TypeScript, where TypeScript is detected automatically:

const tsConfig = config({
  // TypeScript is automatically detected
  jsx: true,
  ecmaVersion: 2020,
});

To explicitly disable TypeScript support:

const tsConfigExplicit = config({
  ts: false,
  jsx: true,
  ecmaVersion: 2020,
});

Browser Environment

For a project tailored to run in a browser environment:

const browserConfig = config({
  browser: true,
  node: false,
});

Related tools

My other shared configurations