Skip to content

ESLint shareable config for the JavaScript/TypeScript/React style guide compliant with the Szum-Tech standards.

License

Notifications You must be signed in to change notification settings

JanSzewczyk/eslint-config

Repository files navigation

@szum-tech/eslint-config

GitHub release (latest by date) GitHub pull requests GitHub issues GitHub Repo stars

πŸš€ publish CodeQL πŸ“ˆ

npm npm

Conventional Commits MIT License


A shared configuration is an NPM package that exports a configuration as an array. It's super convenient for anyone to use, because the configuration dynamically adapts to the needs of the project.

πŸ“š Features

πŸ“– Table of Contents

🎯 Getting Started

βš™οΈ Installation

@szum-tech/eslint-config is available as npm package.

# NPM
npm install --save-dev eslint @szum-tech/eslint-config

# YARN
yarn add -D eslint @szum-tech/eslint-config

# PNPM
pnpm add --save-dev eslint @szum-tech/eslint-config

# BUN
bun add --dev eslint @szum-tech/eslint-config

Configuration

Basic information needed to understand, how to set up eslint configuration, you are able to find in Configuration Files documentation.

A @szum-tech/eslint-config is an npm package that exports a configuration object or array.

@szum-tech/eslint-config could be set via either:

  • A eslint.config.(js|cjs|mjs) file that exports an array

The following examples show how to integrate configuration in project:

  • Via eslint.config.mjs file:

Once you use a predefined configuration, you can export the entire configuration.

export { default } from "@szum-tech/eslint-config";

@szum-tech/eslint-config is flexible enough to allow for configuration extensions. You’ll need to use the spread operator to insert those items into the configuration array.

// eslint.config.js
import szumTechEslintConfig from "@szum-tech/eslint-config";

export default [
  ...szumTechEslintConfig,

  // your modifications
  {
    rules: {
      "no-unused-vars": "warn"
    }
  }
];
  • Via eslint.config.cjs file:
module.exports = require("@szum-tech/semantic-release-config/with-npm");

OR, extends

const szumTechEslintConfig = require("@szum-tech/semantic-release-config/with-npm");

module.exports = [
  ...szumTechEslintConfig,

  // your modifications
  {
    rules: {
      "no-unused-vars": "warn"
    }
  }
];

πŸ’» Scripts

Suggested scripts you can add to package.json file:

{
  "scripts": {
    "lint": "eslint .",
    "lint:ci": "eslint . -o eslint-results.sarif -f @microsoft/eslint-formatter-sarif",
    "lint:fix": "eslint . --fix",
    "lint:inspect": "npx @eslint/config-inspector@latest"
  }
}

Scripts description:

  • lint: Lints the code using ESLint
  • lint:ci: Lints the code using ESLint for CI - uses a @microsoft/eslint-formatter-sarif output format for report generation
  • lint:fix: Automatically fixes linting errors
  • lint:inspect: Launches a visual representation of the ESLint configuration file (check http://localhost:7777 in your browser). Allows you to navigate through the rules, plugins, and language configurations that are enabled or disabled

πŸš€ Minimal GitHub ESlint check workflow

Here are the minimal steps required to run an ESlint check. Creating or adding any content to a PR will trigger this event. Not only will this action validate the code and return its results, but it will also add highlighted parts of the code that have an error to the comments under the PR thanks to the Upload Eslint results to GitHub step, which uses github/codeql-action/upload-sarif.

name: PR Checks βœ…

on:
  pull_request:

jobs:
  lint:
    name: ESlint ⬣
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        node-version: [22.x]
        os: [ubuntu-latest]
    steps:
      - name: Checkout code πŸ“š
        uses: actions/checkout@v4
      - name: Set up Node 🟒
        uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}
          cache: "npm"
      - name: Install dependencies βš™οΈ
        run: npm ci
      - name: ESlint Check ⬣
        run: npm run lint:ci
        continue-on-error: true
      - name: Upload ESlint results to GitHub
        uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: eslint-results.sarif
          wait-for-processing: true

πŸ› οΈ Developer Info

Dependencies

NPM (prod) Dependency Version NPM (prod) Dependency Version NPM (prod) Dependency Version NPM (prod) Dependency Version NPM (prod) Dependency Version NPM (prod) Dependency Version NPM (prod) Dependency Version NPM (prod) Dependency Version NPM (prod) Dependency Version NPM (prod) Dependency Version NPM (prod) Dependency Version NPM (prod) Dependency Version NPM (prod) Dependency Version

Changelog

The changelog is regularly updated to reflect what's changed in each new release.

πŸ“œ License

This project is licensed under the terms of the MIT license.