Angular-Linting konfigurieren
In der Theorie ist uns spätestens nach meinem Blog-Beitrag Die Macht des Linting (JS/TS) klar, warum Linting unerlässlich ist. Was noch fehlt, ist die konkrete Umsetzung. Hast du dich schon gefragt, wie du die Linter ESLint, Prettier, Stylelint, Sheriff und Sonarlint optimal in deinem Angular-Projekt einsetzen kannst? In diesem Guide erfährst du es!
Den dazugehörigen Code findest du auf GitHub.
Vorraussetzungen
- Mindestens Node.js 18.13.0
- Angular CLI 17.0.10
Neues Angularprojekt
Als erstes erstellen wir, mit der Angular CLI, ein neues Projekt.
ng new <insert project name>
ESLint
Folgender Code wird im Root-Verzeichnis, des gerade erstellten Projektes, ausgeführt.
Achtung
Seit ESLint version 9.x.x ist .eslint.json
nicht mehr das standard Configformat (New Default config format). Das Updaten ist mit der finalen ESLint-Config, aus diesem Artikel und dem Migration Guide schnell möglich.
ng add @angular-eslint/schematics
Im Root-Verzeichnis finden wir nun die ESLint-Konfigurationsdatei .eslintrc.json
.
Prettier u. eslint-plugin-prettier
Das Hinzufügen von Prettier und dem eslint-plugin-prettier beginnt mit dem Installieren der packages über npm.
npm install --save-dev eslint-plugin-prettier eslint-config-prettier
npm install --save-dev --save-exact prettier
Die .eslintrc.json
muss um "plugin:prettier/recommended"
erweitert werden. Dadurch werden die ESLint-Regeln an die Prettier-Regeln angepasst.
Die .eslintrc.json
sollte wie folgt aussehen.
{
"root": true,
"ignorePatterns": [
"projects/**/*"
],
"overrides": [
{
"files": [
"*.ts"
],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@angular-eslint/recommended",
"plugin:@angular-eslint/template/process-inline-templates",
"plugin:prettier/recommended"
],
"rules": {
"@angular-eslint/directive-selector": [
"error",
{
"type": "attribute",
"prefix": "app",
"style": "camelCase"
}
],
"@angular-eslint/component-selector": [
"error",
{
"type": "element",
"prefix": "app",
"style": "kebab-case"
}
]
}
},
{
"files": [
"*.html"
],
"extends": [
"plugin:@angular-eslint/template/recommended",
"plugin:@angular-eslint/template/accessibility"
],
"rules": {}
}
]
}
Du siehst die Fehlermeldungen visuell durch ESlint, je nach IDE brauchst du ggf. ein Plugin (vs-code-eslint-plugin für vs-code) oder du gibst dir die Fehler per terminal mit ng lint
aus.
Sheriff
Installiere Sheriff via npm.
npm install @softarc/sheriff-core @softarc/eslint-plugin-sheriff --save-dev
Erweitere die eslintrc.json
im Feld extends
um "plugin:@softarc/sheriff/default"
.
{
"root": true,
"ignorePatterns": [
"projects/**/*"
],
"overrides": [
{
"files": [
"*.ts"
],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@angular-eslint/recommended",
"plugin:@angular-eslint/template/process-inline-templates",
"plugin:prettier/recommended",
"plugin:@softarc/sheriff/default"
],
"rules": {
"@angular-eslint/directive-selector": [
"error",
{
"type": "attribute",
"prefix": "app",
"style": "camelCase"
}
],
"@angular-eslint/component-selector": [
"error",
{
"type": "element",
"prefix": "app",
"style": "kebab-case"
}
]
}
},
{
"files": [
"*.html"
],
"extends": [
"plugin:@angular-eslint/template/recommended",
"plugin:@angular-eslint/template/accessibility"
],
"rules": {}
}
]
}
Styelint
Erneut führen wir die unten stehenden Befehle im Root-Verzeichnis der App aus.
npm init stylelint --save-dev
npm install stylelint-config-standard-scss --save-dev
npm install stylelint-prettier --save-dev
Die gerade erstellte .stylelintrc.json
muss ebenfalls bearbeitet werden.
Passe stylelint-config-standard
zu stylelint-config-standard-scss
an und füge stylelint-prettier/recommended
hinzu.
{
"extends": [
"stylelint-config-standard-scss",
"stylelint-prettier/recommended",
]
}
Stylelint-order
npm install stylelint-order --save-dev
Füge stylelint-order unter plugins
und stylelint-config-clean-order unter extends
der .stylelintrc.json
hinzu.
{
"plugins": [
"stylelint-order"
],
"extends": [
"stylelint-config-standard",
"stylelint-prettier/recommended",
"stylelint-config-clean-order/error"
]
}
Für die Stylelintausgabe per terminal kann das untensteheden Kommando.
npx stylelint "**/*.scss"
Achtung
Die meisten IDEs benötigen für das visuelle Feedback, ähnlich wie bei ESLint, ein Plugin (vs-code stylelint bei vs-code). Achte darauf, dass es für deinen Typ von Stylesheets einzustellen ist (in diesem Fall scss
).
Wenn du Stylelint unterhalb von Version 15 nutzt, musst du noch stylelint-prettier einbinden.
SonarLint
Füge deiner IDE das SonarLint-Plugin hinzu.
Optional
Füge der .package.json
das Script "lint:style": "npx stylelint '**/*.scss'"
hinzu und integriere die Linter in die pre-commit-hook und die CI/CD des Projekts.