2.3.3 • Published 9 months ago
@libs-for-dev/eslint-rules v2.3.3
Strict ESLint rules for libs-for-dev repositories
The strictest ESLint configuration for modern JavaScript/TypeScript development
Table of Contents
- Strict ESLint rules for
libs-for-devrepositories
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-rulesSupported File Types
This package provides the strictest ESLint rules for next type of files:
- javascript files
**/*.js,**/*.cjs,**/*.mjsrules:- @eslint/js(Common JS rules)
- @eslint-community/eslint-plugin-eslint-comments
- @stylistic/eslint-plugin(No needed use
prettieranymore) - eslint-plugin-check-file(Strict rules for files and folders naming)
- eslint-plugin-import-x
- eslint-plugin-jsdoc
- eslint-plugin-n
- eslint-plugin-perfectionist(Best sorting for everything in JS/TS)
- eslint-plugin-prefer-arrow(No needed use
functionanymore) - eslint-plugin-promise
- eslint-plugin-regexp
- eslint-plugin-unicorn(🦄)
- json
**/*.jsonc,**/*.jsonfiles(e.g. tsconfig.json, src/some-path/file.json) rules: eslint-plugin-jsonc - markdown
**/*.mdfiles rules: @eslint/markdown - ignores: common ignore rules for
**/dist/**,**/node_modules/** package.jsonrules: eslint-plugin-package-json +jsonrules- react
**/*.jsx,**/*.tsxfiles rules +javascript:- eslint-plugin-jsx-a11y(Static AST checker for accessibility rules on JSX elements)
- eslint-plugin-react-hooks eslint-plugin-react-perf
- eslint-plugin-react
- svelte
**/*.sveltefiles rules: eslint-plugin-svelte +javascriptrules - typescript
**/*.cts,**/*.mts,**/*.tsfiles rules: typescript-eslint +javascriptrules - vitest
**/*.spec.cts,**/*.spec.mts,**/*.spec.ts,**/*.test.cts,**/*.test.mts,**/*.test.tsfiles rules: @vitest/eslint-plugin - vue
**/*.vuefiles rules +javascriptrules:- eslint-plugin-vue-scoped-css
- eslint-plugin-vue
- eslint-plugin-vuejs-accessibility(An eslint plugin for checking accessibility rules from within
.vuefiles)
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 variablesno-undef- Prevent usage of undeclared variablesno-console- Disallow console.log and similar methodsno-debugger- Disallow debugger statements
Best Practices
prefer-arrow- Enforce using arrow functionsprefer-const- Require const declarations for variables that are never reassignedno-var- Prevent usage of varpromise/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 conventionscheck-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 Hooksreact-hooks/exhaustive-deps- Verify dependencies array
Accessibility
jsx-a11y/alt-text- Enforce alt text for imagesjsx-a11y/click-events-have-key-events- Ensure keyboard accessibility
Vue Specific
Template
vue/no-unused-components- Prevent unused componentsvue/valid-template-root- Enforce valid template rootvue/multi-word-component-names- Enforce multi-word component names
Accessibility
vuejs-accessibility/alt-text- Enforce alt text for imagesvuejs-accessibility/click-events-have-key-events- Ensure keyboard accessibility
Testing (Vitest)
- Best Practices
vitest/expect-expect- Enforce expecting test resultsvitest/no-disabled-tests- Disallow disabled testsvitest/no-focused-tests- Disallow focused tests
Documentation
- JSDoc
jsdoc/require-jsdoc- Require JSDoc commentsjsdoc/require-param- Require parameter documentationjsdoc/require-returns- Require return documentation
Import/Export
- Organization
import-x/order- Enforce import orderimport-x/no-duplicates- Prevent duplicate importsperfectionist/sort-imports- Sort import statements
Performance
React
react-perf/jsx-no-new-object-as-prop- Prevent new objects in propsreact-perf/jsx-no-new-array-as-prop- Prevent new arrays in props
Vue
vue/no-async-in-computed-properties- Prevent async computed propertiesvue/no-side-effects-in-computed-properties- Prevent side effects in computed
Regular Expressions
- Safety
regexp/no-empty-group- Disallow empty regex groupsregexp/no-useless-quantifier- Prevent useless quantifiers
Package.json
- Maintenance
package-json/sort-fields- Enforce consistent field orderingpackage-json/valid-dependencies- Ensure valid dependencies