← Alle Projekte
Highlight CLI-Tool 2024

ExtMig

Open-Source-CLI-Tool zur Automatisierung und Vereinfachung von Datenbank-Migrations-Workflows für TypeScript-Projekte.

Ein Open-Source-Entwicklerwerkzeug zur Verbesserung von Migrations-Workflows und Produktivität für moderne Entwicklungsteams.

#open-source#developer-tools#automation#cli#typescript

ExtMig ist ein Open-Source-CLI-Tool, das entwickelt wurde, um Migrations-Workflows in TypeScript-basierten Node.js-Projekten zu vereinfachen und zu automatisieren. Entstanden aus der Reibung bei der manuellen Verwaltung von Datenbankmigrationen zwischen Umgebungen, bietet ExtMig Entwicklern eine strukturierte, reproduzierbare Methode zum Ausführen, Verfolgen und Zurückrollen von Migrationen mit einem einzigen Befehl.

Das Projekt wurde mit starkem Fokus auf Entwicklererfahrung aufgebaut: TypeScript-first-Konfiguration, klare CLI-Ausgabe und eine erweiterbare Architektur, die sich in bestehende Toolchains integriert, ohne eine bestimmte Einrichtung zu erzwingen.

Offen auf GitHub veröffentlicht, spiegelt ExtMig das Engagement wider, Werkzeuge zu entwickeln, die echte Probleme in echten Entwicklungs-Workflows lösen, und zur Open-Source-Community beizutragen.

Hauptfunktionen

⚡

Automatisierte Migrationsausführung

Migrationen per einzigem CLI-Befehl ausführen, zurückrollen und testen: mit klarer Ausgabe und Fehlerbehandlung.

🔧

TypeScript-first Konfiguration

Konfigurations- und Migrationsdateien werden in TypeScript geschrieben: mit vollständiger Typsicherheit und IDE-Unterstützung.

🔌

Erweiterbares Plugin-System

Benutzerdefinierte Hooks vor und nach jedem Migrationsschritt hinzufügen, um sich in bestehende Toolchains zu integrieren.

↩️

Sicheres Rollback

Jede Migration definiert eine up- und down-Funktion für saubere und vorhersehbare Rollbacks in Entwicklung und Produktion.

Tech-Stack

TypeScriptNode.js

Architektur

ExtMig ist als Node.js-CLI mit einer Plugin-basierten Architektur aufgebaut. Jeder Migrationsschritt wird als atomare Einheit dargestellt, was Rollback und Dry-Run-Unterstützung ermöglicht. Das Tool liest die Konfiguration aus einer lokalen extmig.config.ts-Datei und löst Migrationsdateien der Reihe nach auf.

Herausforderungen & Lösungen

Die schwierigen Probleme, und wie ich sie gelöst habe.

01

Atomares Rollback über mehrere Schritte sicherstellen

Die schwierigste Aufgabe war das Design der Ausführungs-Engine, sodass bei einem Fehler der gesamte Batch sauber zurückgerollt wird. Gelöst durch Transaction-Boundaries und eine interne State Machine.
02

TypeScript-Konfigurationsauflösung zur Laufzeit

Das Laden einer extmig.config.ts zur Laufzeit erforderte dynamische Kompilierung mit ts-node/esm. CJS- und ESM-Formate ohne erzwungene Neukonfiguration zu unterstützen war eine nicht-triviale Kompatibilitätsherausforderung.

Interesse an einer Zusammenarbeit?

Ich bin immer offen für Gespräche über neue Projekte und Möglichkeiten.