Verwenden Sie TSLINT, um ungültige Importe zwischen Paketen und Ordnern in Ihrem TypeScript -Projekt zu überprüfen.
Automatische Validierung und Dokumentation der Paketarchitektur (über tslint-folders-diagrams ).
Tslint-Folders sind stabil und werden jeden Tag in CI-Builds und auf Entwicklerboxen (Linux, Mac, Windows) für mindestens ein großes Produkt verwendet.
Sparen Sie Zeit, die man manuell für „alberne“ Fehler aufgewendet hat, um::
file-name-casing Tslint-Regel ermöglicht nur 1 Stil) Wir verwenden Semver für die Versionierung. Die verfügbaren Versionen finden Sie in Veröffentlichungen.
yarn add tslint-folders
Bearbeiten Sie Ihren tslint.json um einen Eintrag "rulesDirectory" zu haben, der auf Tslint-Flederlers hinweist.
Normalerweise wäre das wie:
"rulesDirectory": "./node_modules/tslint-folders/dist/lib/"
Ein Beispiel siehe Tslint.tslint-Folders.json.
Die TSlint -Regeln sind in tslint.json aktiviert und konfiguriert.
Die Beispiele finden Sie im Abschnitt unter tsf-folders-imports-between-packages in tslint.tslint-folters.json oder die Unit-Tests für Beispiele.
Optional können Sie die Konfiguration von Tslint-Folders in eine separate Datei wie tslint.tslint-folders.json aufteilen. Um auf die Datei zu verweisen, fügen Sie diesen Code zu tslint.json hinzu:
"extends": "./tslint.tslint-folders.json"
Unter der Annahme, dass Tslint bereits vorhanden ist, sollten Sie jetzt von Tslint markiert werden, wenn unerwartete Importe (oder deaktivierte Tests) angezeigt werden. Dies sollte wie für TSlint wie gewohnt funktionieren: in der Befehlszeile oder in einem Editor wie Visual Code (muss möglicherweise den Editor erfrischen).
Siehe Tslint-Diagramme
Ein Diagramm kann automatisch aus derselben Konfiguration generiert werden, mit der der Code validiert wurde:

Weitere Informationen finden Sie unter Tslint-Folders-Diagrams.
Hier ist eine Zusammenfassung der aktuellen benutzerdefinierten Regeln.
| Regel id | Beschreibung |
|---|---|
| TSF-OLDERS-Behinderungstest | Erkennen Sie einen Test -Unit -Test, Testsuite oder Integrationstest. |
| TSF-FOLDERS-Datei-Names | Validiert das Gehäuse von Dateinamen. Ähnlich wie bei der Standard- file-name-casing außer es unterstützt mehrere zulässige Gehäuse, und die Dateinamen mit ungültigen Zeichen (z. B. Leerzeichen oder Kommas) nicht zugibt. |
| TSF-Olders-Import-FROM-DISALED-SOLDERS | Erkennen Sie einen Import aus einem nicht standardmäßigen Ordner wie node_modules |
| TSF-MORTER-AMPORTS-BETEN-PACKAGES | Erkennen Sie einen Import aus einem "höheren Level" -Paket: Importieren Sie beispielsweise aus einer Anwendung "Shell" -Paket, wenn Sie in einem "Bereich" -Paket "in" Bereich "sind. Dies ist die Haupt -Custom -Regel. Kann auch erkennen, wann ein Paket Importe mit diesem Paketnamen (anstelle eines relativen Pfades) importiert. |
| TSF-SOLDERS-Test-With-Breakpoint | Erkennen, wann ein Integrationstest einen Bruchpunkt wie browser.debug() |
| Website | URL |
|---|---|
| Quellcode (GitHub) | https://github.com/mrseanryan/tslint-prolderers |
| Github -Seite | https://mrseanryan.github.io/tslint-folterers/ |
| NPM | https://www.npmjs.com/package/tslint-folterers |
Alle Regeln verwenden das gleiche Präfix- tsf-folders- .
Um den Entwicklern klar zu machen, dass eine benutzerdefinierte Regel beteiligt ist, enthalten alle Nachrichten aus den Regeln auch die Regel -ID.
Einige dieser Regeln könnten durch Standard -TSlint -Konfiguration ersetzt werden. Wenn Sie jedoch benutzerdefinierte Regeln haben, erhalten Sie klarere Nachrichten, die dem Entwickler helfen, zu wissen, was zu reparieren ist (oder welche Regel für dieses Code -Stück zu deaktivieren ist).
In einigen Regeln geht es nicht ausschließlich um "Ordner", sondern sind hier enthalten, da sie auch nützlich erscheinen.
Weitere Informationen und Beispiele finden Sie in den Unit -Tests
Um an dem Quellcode für Tslint-Fasters zu arbeiten, gibt es einige Skripte:
| Befehl | Beschreibung |
|---|---|
| Garnbau | Erstellt die Regeln für den Ordner "dist", von wo aus sie ausgeführt werden können. |
| Garnfutter | Findet den Quellcode der Regeln fest. |
| Garn beginnen | Erstellt, testet und linkt den Code. |
| Garntest | Testen Sie die Regeln gegen Spezifikationsdateien (*.lint) |
| Garn-Test-eins | Testen Sie eine einzelne Regel gegen Spezifikationsdateien (*.lint) |
Die Unit-Tests für die tsf-folders-imports-between-packages sind hier.
Die Unit -Tests verwenden Testdaten, um die Paketgrenzen einer ziemlich typischen Website zu überprüfen.
Die übereinstimmende Konfiguration ist in tslint.tslint-folders.json zu sehen
Die Testdaten basieren auf einer Website, die mehrere Pakete verwendet:
| Paketname | Beschreibung |
|---|---|
| Hülse | Die Anwendungsschale - Dies ist das oberste Paket und kann aus jedem anderen Paket importieren. |
| TODO-AREA | Ein "Todo App" -Bereich der Website, der in der Shell gehostet wird. Es sollte nicht aus der Hülle oder aus anderen "Bereichs" -Paketen importiert werden. |
| todo-contact | Ein "Kontaktinformationsbereich" der Website, der in der Shell gehostet wird. Es sollte nicht aus der Hülle oder aus anderen "Bereichs" -Paketen importiert werden. |
| Gitterverpackung | Ein UI -Netz, das von Gebietspaketen verwendet wird. Es sollte keine anderen anerkannten Pakete importieren. |
| Utils | Ein "Utils" -Paket, das von den Shell- und Flächenpaketen verwendet wird. Es sollte keine anderen anerkannten Pakete importieren. |
Beispielvalidierung : 'Shell' sollte in der Lage sein, aus 'TODO-AREA' zu importieren, aber nicht umgekehrt (Shell befindet sich auf einer höheren Abstraktionsstufe und möchte auch 2-Wege-Abhängigkeiten vermeiden).
Tslint-Molders können die Importe zwischen Unterordnern eines Pakets auch validieren.
Das Paket "Todo Area" -Paket für die Testdaten ist mit ziemlich typischen Unterordnern wie "Komponenten" und "Modellen" konfiguriert. tslint.tslint-folters.json wurde konfiguriert, um die Importe zwischen diesen Ordnern zu überprüfen.
| Unterordner Name | Beschreibung |
|---|---|
| Komponenten | Oberstufe Ordner von UI-Komponenten. Kann aus einem der anderen erkannten Ordner importieren. |
| ViewModels | Ordner der Ansichtsmodelle, die von den UI -Komponenten verwendet werden. Kann nur aus Modellen oder Utils importieren. |
| Modelle | Ordner der Modelle, verwendet von den Ansichtsmodellen. Kann nur von utils importieren. |
| Utils | Ein Ordner "Utils". Es sollte keine anderen anerkannten Ordner importieren. |
Beispielvalidierung : 'Komponenten' sollten in der Lage sein, aus "Modellen" zu importieren, aber nicht umgekehrt (Komponenten sind auf einer höheren Abstraktionsniveau und möchten auch 2-Wege-Abhängigkeiten vermeiden).
Siehe den beitragenden Readme.
Dieses Projekt basiert auf dem exzellenten Seeder-Projekttypscript-Bibliothek-Starter.
Das Projekt wurde begonnen, um vermeiden, ähnliche Codierungsprobleme in großen Typecript -Code -Grundlagen wiederholt zu beheben.
Siehe hier
Das ist so ziemlich es. Lassen Sie mich wissen, ob dies nützlich ist oder wie es verbessert werden kann!
Originalarbeit von Sean Ryan - Mr.Sean.ryan (unter gmail.com)
Dieses Projekt ist unter der MIT -Lizenz lizenziert - finden Sie in der Lizenzdatei Einzelheiten