@libs-for-dev/eslint-rules
TypeScript icon, indicating that this package has built-in type declarations

2.3.0 • Public • Published

Strict ESLint rules for libs-for-dev repositories

The strictest ESLint configuration for modern JavaScript/TypeScript development

Table of Contents

Features

  • 🎯 Zero-config setup for common project types
  • 🔧 Comprehensive rule sets for JS, TS, Vue, React, and more
  • 🎨 Built-in stylistic rules (no Prettier needed)
  • 📝 Strict file naming conventions
  • ✨ Best practices enforcement

Requirements

  • Node.js >=20
  • ESLint >=9.0.0

Installation

Install with your favorite package manager:

# npm
npm install --save-dev @libs-for-dev/eslint-rules

# yarn
yarn add -D @libs-for-dev/eslint-rules

# pnpm
pnpm add -D @libs-for-dev/eslint-rules

# bun
bun add -D @libs-for-dev/eslint-rules

Supported File Types

This package provides the strictest ESLint rules for next type of files:

Usage

Basic Configuration

Create eslint.config.mjs in your project root:

import { configs } from '@libs-for-dev/eslint-rules'

export default [
  configs.ignores,
  configs.javascript,
  configs.json,
  configs.markdown,
  configs.packageJson,
]

TypeScript Project

import { configs } from '@libs-for-dev/eslint-rules'

export default [
  configs.ignores,
  configs.typescript,
  configs.json,
  configs.markdown,
  configs.packageJson,
]

Vue.js Project

import { configs } from '@libs-for-dev/eslint-rules'

export default [
  configs.ignores,
  configs.typescript, // if using TypeScript
  configs.vue,
  configs.json,
  configs.markdown,
  configs.packageJson,
]

Customization

import { configs } from '@libs-for-dev/eslint-rules'

export default [
  configs.typescript,
  configs.vue,
  {
    files: configs.vue.files,
    languageOptions: configs.vue.languageOptions,
    plugins: configs.vue.plugins,
    rules: {
      'vue/block-lang': ['error', { script: { lang: 'js' } }],
    },
  },
  {
    plugins: {
      ...configs.javascript.plugins,
    },
    rules: {
      'check-file/filename-naming-convention': [
        'error', { '**/*.vue': 'CAMEL_CASE' },
      ],
    },
  },
  {
    files: ['**/*.test.ts'],
    rules: {
      'max-lines-per-function': ['error', { max: 80 }],
    },
  },
  {
    files: ['/some/specific/folder/*.ts'],
    rules: {
      'max-lines': 'off',
    },
  }
]

ESLint Rules Overview

Code Quality Rules

  • Error Prevention

    • no-unused-vars - Prevent unused variables
    • no-undef - Prevent usage of undeclared variables
    • no-console - Disallow console.log and similar methods
    • no-debugger - Disallow debugger statements
  • Best Practices

    • prefer-arrow - Enforce using arrow functions
    • prefer-const - Require const declarations for variables that are never reassigned
    • no-var - Prevent usage of var
    • promise/catch-or-return - Enforce handling of Promises rejection

Style Rules

  • Formatting

    • @stylistic/indent - Enforce consistent indentation
    • @stylistic/quotes - Enforce consistent quote style
    • @stylistic/semi - Enforce consistent semicolon usage
    • @stylistic/comma-dangle - Enforce consistent comma style
  • Naming Conventions

    • check-file/filename-naming-convention - Enforce file naming conventions
    • check-file/folder-naming-convention - Enforce folder naming conventions

TypeScript Specific

  • Type Safety
    • @typescript-eslint/strict-boolean-expressions
    • @typescript-eslint/no-explicit-any
    • @typescript-eslint/explicit-function-return-type
    • @typescript-eslint/explicit-member-accessibility

React Specific

  • Hooks

    • react-hooks/rules-of-hooks - Enforce Rules of Hooks
    • react-hooks/exhaustive-deps - Verify dependencies array
  • Accessibility

    • jsx-a11y/alt-text - Enforce alt text for images
    • jsx-a11y/click-events-have-key-events - Ensure keyboard accessibility

Vue Specific

  • Template

    • vue/no-unused-components - Prevent unused components
    • vue/valid-template-root - Enforce valid template root
    • vue/multi-word-component-names - Enforce multi-word component names
  • Accessibility

    • vuejs-accessibility/alt-text - Enforce alt text for images
    • vuejs-accessibility/click-events-have-key-events - Ensure keyboard accessibility

Testing (Vitest)

  • Best Practices
    • vitest/expect-expect - Enforce expecting test results
    • vitest/no-disabled-tests - Disallow disabled tests
    • vitest/no-focused-tests - Disallow focused tests

Documentation

  • JSDoc
    • jsdoc/require-jsdoc - Require JSDoc comments
    • jsdoc/require-param - Require parameter documentation
    • jsdoc/require-returns - Require return documentation

Import/Export

  • Organization
    • import-x/order - Enforce import order
    • import-x/no-duplicates - Prevent duplicate imports
    • perfectionist/sort-imports - Sort import statements

Performance

  • React

    • react-perf/jsx-no-new-object-as-prop - Prevent new objects in props
    • react-perf/jsx-no-new-array-as-prop - Prevent new arrays in props
  • Vue

    • vue/no-async-in-computed-properties - Prevent async computed properties
    • vue/no-side-effects-in-computed-properties - Prevent side effects in computed

Regular Expressions

  • Safety
    • regexp/no-empty-group - Disallow empty regex groups
    • regexp/no-useless-quantifier - Prevent useless quantifiers

Package.json

  • Maintenance
    • package-json/sort-fields - Enforce consistent field ordering
    • package-json/valid-dependencies - Ensure valid dependencies

Package Sidebar

Install

npm i @libs-for-dev/eslint-rules

Weekly Downloads

21

Version

2.3.0

License

MIT

Unpacked Size

46.7 kB

Total Files

54

Last publish

Collaborators

  • uwl