@hansevision/eslint-config
v1.0.11
Published
Shareable ESLint configuration with TypeScript support
Readme
@hansevision/eslint-config
A shareable, opinionated ESLint configuration for TypeScript projects. (SPFX OnPrem)
Installation
ensure "eslint": "^8.57.1",
npm install eslint@^8 --save-dev
npm install gulp-eslint-new@^2.6.2 --save-devedit gulpfile.js ... // disable tslint to use gulp-eslint-new build.tslint.enabled = false;
const eslint = require('gulp-eslint-new'); ...
npm install --save-dev @hansevision/eslint-config --legacy-peer-deps
also
npm install --save-dev eslint-plugin-sonarjs@^4.0.2 --legacy-peer-depsUsage
ESLint v8 (.eslintrc.js)
module.exports = {
extends: ["@hansevision/eslint-config"],
rules: {
// eigene Überschreibungen
"no-console": "warn",
},
};Or ESLint in .eslintrc.json
{ "extends": ["@hansevision/eslint-config"] }
Or ESM import
import base from "@hansevision/eslint-config";
export default {
...base,
// your project-specific overrides
};Available Configurations
| Export | Description |
| ------------------ | ----------------------------------------- |
| default / base | Recommended rules for TypeScript projects |
Rules Overview
Plugins
| Plugin | Purpose |
| -------------------- | --------------------------------------- |
| @typescript-eslint | TypeScript-aware lint rules |
| sonarjs | Code quality and smell detection |
| check-file | Enforce consistent file & folder naming |
Base rules
| Rule | Severity | Notes |
| ------------------------------------------ | -------- | ------------------------------------------------- |
| eslint:recommended | — | ESLint built-in recommended rules |
| plugin:@typescript-eslint/recommended | — | typescript-eslint recommended rules |
| plugin:sonarjs/recommended | — | SonarJS recommended rules |
| quotes | error | Enforce double quotes |
| no-var | error | Disallow var, use const/let |
| no-console | error | Allow only console.warn and console.error |
| no-debugger | error | Disallow debugger statements |
| eqeqeq | error | Always require strict equality (===) |
| curly | error | Always require braces for control statements |
| @typescript-eslint/no-explicit-any | warn | Discourage use of any type |
| @typescript-eslint/no-unused-vars | error | Ignore variables/args prefixed with _ |
| @typescript-eslint/no-non-null-assertion | warn | Discourage non-null assertions (!) |
| sonarjs/no-duplicate-string | error | Flag strings repeated ≥ 2 times |
| sonarjs/max-lines | error | Maximum 40 lines per file |
| sonarjs/arrow-function-convention | error | Require parentheses and braces in arrow functions |
| check-file/folder-naming-convention | error | src/ subfolders must use camelCase |
Development
# Install dependencies
npm install
# Build the package
npm run build
# Watch mode
npm run dev
# Lint the source
npm run lint