Mein TypeScript-Setup für Node.js

Ich würde gerne behaupten, dass mein Setup schlank ist. Doch bei TypeScript ist der Tool-Zoo zum gewissen Grad nicht vermeidbar. Ich habe es für mich auf ein Minimum reduziert und stelle die entscheidenden Konfigurationen vor.

3 Minuten

Basis

Der Grundstein ist der Paketmanager npm. Einen Wechsel zu Bun habe ich mich noch nicht getraut. Diese Überlegung steht jedoch bereits länger im Raum. Für die TypeScript-Konfiguration habe ich sichergestellt, dass ich meine lokalen Importe absolut deklarieren kann. D. h., statt ../../../some/file verwende ich @/some/file. Das erleichtert das Refactoring und ermöglicht mir eine direkte Unterscheidung in der Importliste zwischen eigenen und Dritt-Inhalten.

Es gibt viele Tweaks und Compilation-Options in der TsConfig. Wenn du an den Details interessiert bist,

Lass uns schnacken

Testing

Die Verwendung von TypeScript ist auch für die Tests sinnvoll. Damit diese mit den absoluten Importen zurechtkommen und auch im Test-Ordner anwenden können, gilt es, eine dazu passende Konfiguration im Test-Tool vorzunehmen – analog zur TsConfig-Definition weiter oben. Bei vitest ist das einfach möglich … einer der Gründe, weshalb ich dieses Tool gewählt habe.

API-Definition

In der Regel erzeuge ich in meinen Projekten eine REST-Schnittstelle zur Kommunikation mit dem Frontend. Einerseits möchte ich eine OpenAPI-konforme Definition der Schnittstelle erstellen, andererseits möchte ich diese Definition automatisch aus dem Code generieren.

Letzteres ist besonders wichtig, weil die Erfahrung zeigt, dass Dokumentation und tatsächliche Implementierung schnell auseinanderlaufen. Dies erzeugt Frust und Mehraufwand sowohl im Team als auch bei der Umsetzung. Hierfür hat sich das Tool TSOA bewährt. Die automatische Erzeugung basiert auf den TypeScript-Definitionen. Diese gilt es zu konfigurieren und mit den absoluten Importen zu verheiraten.

Linting

Neben der Typisierung gehört die Code-Formatierung zum guten Ton. Ich möchte mich nicht damit beschäftigen, wie mein Code formatiert wird. Dies soll automatisch erfolgen und über ein dazugehöriges Tooling sichergestellt werden. Das erleichtert die Zusammenarbeit im Team, in dem sich die Änderungen auf programmatische Anpassungen und nicht auf stilistische Änderungen beziehen.

Bundeln

Als einer der letzten Schritte im Prozess ist der TypeScript-Code zu einer Node.js-kompatiblen Datei zusammenzufassen – also zu bundeln. Hierfür hat sich das Paket pkgroll als wertvoll erwiesen. Es nutzt die vorhandene Konfiguration und benötigt keine zusätzliche Datei. Ein Segen, denn alle oben genannten Tools benötigen jeweils eine eigene Konfigurationsdatei, weshalb das Repository-Rootverzeichnis eine große Sammlung von Dateien ist. Definitiv einer der großen Nachteile von TypeScript, den ich gestern in meinem Artikel so explizit nicht angesprochen habe.

Fazit

Die verschiedenen Aspekte beleuchten das Setup, das direkt mit TypeScript in Beziehung steht. Drumherum gibt es noch einige weitere Puzzlestücke, die die gesamte Build- und Delivery-Pipeline betreffen. Mit dem Linting habe ich das bereits angedeutet. Die weiteren Punkte wie Rechtschreibprüfung oder Semantic Versioning werde ich in zukünftigen Artikeln aufgreifen.

Wie sieht dein TypeScript-Setup aus?

Was gehört für dich unbedingt in ein TypeScript‑Backend‑Setup – und was hast du bewusst herausgeschmissen?

Ich erzähl gern von meinen Erfahrungen
call to action background image

Abonniere meinen Newsletter

Erhalte einmal im Monat Nachrichten aus den Bereichen Softwareentwicklung und Kommunikation gespikt mit Buch- und Linkempfehlungen.