Zum Inhalt springen
rdlabo.devdocs

Die Kit-Integration mit ESLint prüfen

Halten Sie modale Starter, asynchrone Aktionshandler und Formularfehler einheitlich, während Ihre Ionic-Angular-App wächst. @rdlabo/eslint-plugin-rules prüft die Aufrufmuster, die zu @rdlabo/ionic-angular-kit passen.

Benötigte Prüfungen aktivieren

In einer Ionic-Angular-9-App mit konfiguriertem Angular / Angular ESLint 21–22:

npm install --save-dev @rdlabo/eslint-plugin-rules@22

Ergänzen Sie diese Einträge in eslint.config.mjs und behalten Sie Ihre vorhandenen Prüfungen bei. Sie aktivieren vier gezielte Regeln; wählen Sie diejenigen aus, die zu den Kit-Funktionen Ihrer App passen.

import tseslint from 'typescript-eslint';
import angular from 'angular-eslint';
import rdlabo from '@rdlabo/eslint-plugin-rules';

export default tseslint.config(
  {
    files: ['**/*.ts'],
    languageOptions: { parser: tseslint.parser },
    processor: angular.processInlineTemplates,
    plugins: { '@rdlabo/rules': rdlabo },
    rules: {
      '@rdlabo/rules/deny-overlay-create': 'error',
      '@rdlabo/rules/prefer-modal-launcher': 'error',
    },
  },
  {
    files: ['**/*.html'],
    languageOptions: { parser: angular.templateParser },
    plugins: { '@rdlabo/rules': rdlabo },
    rules: {
      '@rdlabo/rules/prefer-disable-handler': 'error',
      '@rdlabo/rules/require-ion-error-text': 'error',
    },
  },
);

Diese Regeln sind auch in rdlabo.configs.recommended enthalten.

Modale Dialoge über einen Starter erstellen

deny-overlay-create meldet .create()-Aufrufe an ModalController und PopoverController. prefer-modal-launcher prüft, ob sich presentModal-Aufrufe in launch*-Funktionen befinden.

Mit overlay und DetailPage aus Ihrer Overlay-Konfiguration wird Folgendes gemeldet:

export const openDetail = () => overlay.presentModal(DetailPage);

Verwenden Sie einen Starter:

export const launchDetail = () => overlay.presentModal(DetailPage);

Asynchrone Aktionen umhüllen

prefer-disable-handler meldet eine nicht umhüllte Aktion:

<ion-button type="button" (click)="vm.refresh()">Refresh</ion-button>

Stellen Sie die Kit-Hilfsfunktion disableHandler in Ihrer Komponente oder Ihrem ViewModel bereit und übergeben Sie das Ereignis sowie den asynchronen Vorgang:

import { disableHandler } from '@rdlabo/ionic-angular-kit';

// Innerhalb der Komponente oder des ViewModel:
readonly disableHandler = disableHandler;
<ion-button type="button" (click)="vm.disableHandler($event, vm.refresh())">Refresh</ion-button>

Die Regel prüft den Aufruf der Hüllfunktion, nicht das Verhalten des asynchronen Vorgangs. Lassen Sie Sendeaktionen beim (submit) des Formulars mit ion-button type="submit".

Den Signal-Forms-Adapter berücksichtigen

Standardmäßig verlangt require-ion-error-text an Ionic-Eingabeelementen mit [formField] eine Quelle für Fehlertexte.

Für Angular-22-Apps mit Kit Signal Forms importieren Sie FormField und KitIonicFormField in jeder betroffenen Komponente und installieren Sie provideKitIonicSignalForms(). Überschreiben Sie anschließend diesen Eintrag in den rules der HTML-Konfiguration:

'@rdlabo/rules/require-ion-error-text': [
  'error',
  { formFieldProvidesErrorText: true },
],

Diese Option erklärt, dass der Adapter die Fehlertexte bereitstellt. ESLint prüft dabei weder die Importe noch die Provider des Adapters.

Bei Bedarf ViewModel-Regeln ergänzen

Wenn Ihre App eine ViewModelStore-Architektur verwendet, ergänzen Sie require-viewmodel und no-component-writable-signal. Konfigurieren Sie sie passend zur ViewModel-Basis Ihrer App; ViewModelStore wird nicht vom Kit exportiert.

In CI ausführen

Nach der Installation der Abhängigkeiten lokal und in CI ausführen:

npx eslint 'src/**/*.{ts,html}' --max-warnings 0

Passen Sie den Quellpfad für Ihre App an. Die vollständigen empfohlenen Regeln finden Sie unter ESLint-Konfiguration, weitere Konventionen unter Regeloptionen.