@libs-for-dev/eslint-rules
v2.4.0
Published
Libs for Dev ESLint rules
Readme
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, Svelte and more
- 🎨 Built-in stylistic rules (no Prettier needed)
- 📝 Strict file naming conventions
- ✨ Best practices enforcement
Requirements
- Node.js >=24.7.0
- ESLint >=9.0.0 <10.0.0
Installation
⚠️ Important: This package uses peer dependencies. You must install the required peer dependencies separately based on your project type (React, Vue, Svelte, etc.). See the Peer Dependencies section below for detailed installation instructions.
Basic 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-rulesPeer Dependencies
This package requires several peer dependencies that must be installed separately based on your project type:
Required for all projects:
# ESLint (required)
npm install --save-dev eslint@^9.0.0For React projects:
npm install --save-dev eslint-plugin-react@^7.37.5 eslint-plugin-react-hooks@^5.2.0 eslint-plugin-react-perf@^3.3.3 react@^19.1.1For Vue projects:
npm install --save-dev eslint-plugin-vue@^10.4.0 eslint-plugin-vue-scoped-css@^2.12.0 eslint-plugin-vuejs-accessibility@^2.4.1 vue@^3.5.21 vue-eslint-parser@^10.2.0For Svelte projects:
npm install --save-dev eslint-plugin-svelte@^3.12.3 svelte@^5.38.10 svelte-eslint-parser@^1.3.2Complete Installation Examples
React + TypeScript project:
npm install --save-dev @libs-for-dev/eslint-rules eslint@^9.0.0 eslint-plugin-react@^7.37.5 eslint-plugin-react-hooks@^5.2.0 eslint-plugin-react-perf@^3.3.3 react@^19.1.1 typescript@^5.9.2Vue + TypeScript project:
npm install --save-dev @libs-for-dev/eslint-rules eslint@^9.0.0 eslint-plugin-vue@^10.4.0 eslint-plugin-vue-scoped-css@^2.12.0 eslint-plugin-vuejs-accessibility@^2.4.1 vue@^3.5.21 vue-eslint-parser@^10.2.0 typescript@^5.9.2Svelte + TypeScript project:
npm install --save-dev @libs-for-dev/eslint-rules eslint@^9.0.0 eslint-plugin-svelte@^3.12.3 svelte@^5.38.10 svelte-eslint-parser@^1.3.2 typescript@^5.9.2Supported 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
