portless - Ein Tool, das Portnummern durch namensbasierte `.localhost`-URLs ersetzt
(github.com/vercel-labs)- Ein Open-Source-Dienstprogramm von Vercel Labs, das bei der lokalen Entwicklung Portkonflikte und den Stress, sich merken zu müssen, welcher Port verwendet wurde, beseitigt
- Vergibt jedem Entwicklungsserver eine eindeutige app.localhost-Subdomain und bietet damit ein URL-Schema, das sowohl für Menschen als auch für AI-Agenten erkennbar ist
Wenn es mitnext devausgeführt wird, ist eshttp://localhost:3000, sodass man sich 3000 merken muss.
Bei Ausführung vonportless myapp next devist der Zugriff stattdessen in der Formhttp://myapp.localhost:1355möglich.
Bei Ausführung wieportless api.myapp pnpm startwird auch der Zugriff per Subdomain wiehttp://api.myapp.localhost:1355unterstützt. - Arbeitet mit einer proxybasierten Architektur, bei der
portless proxydie Anfragen zentral weiterleitet- Beim Start einer App wird der Proxy automatisch gestartet, und jede App erhält einen zufälligen Port (4000–4999)
- Die meisten Frameworks (Next.js, Express, Nuxt usw.) erkennen die Umgebungsvariable
PORTautomatisch - Für einige Frameworks wie Vite und Astro wird die Kompatibilität durch eine automatische Flag-Injektion sichergestellt
- HTTP/2- und HTTPS-Unterstützung für schnelle Seitenladezeiten und sichere lokale Kommunikation
- Browser begrenzen HTTP/1.1 auf 6 Verbindungen pro Host
- Das verschlechtert die Leistung von Entwicklungsservern wie Vite/Nuxt, die viele unkomprimierte Dateien ausliefern
- HTTP/2 multiplexed alle Anfragen über eine einzige Verbindung
- Automatisierte Erstellung eigener Zertifikate und Registrierung im System-Trust-Store
- Mit den Optionen
--certund--keykönnen auch benutzerdefinierte Zertifikate verwendet werden
- Browser begrenzen HTTP/1.1 auf 6 Verbindungen pro Host
- Bietet eine befehlsorientierte CLI-Oberfläche
portless <name> <cmd>: Startet eine App mit dem angegebenen Namenportless list: Zeigt die Liste aktiver Routen anportless proxy start/stop: Steuert den Proxy- Mit der Umgebungsvariable
PORTLESS=0kann die Ausführung ohne Proxy erfolgen
- Speichert Routen- und PID-Informationen über ein Statusverwaltungsverzeichnis
- Im normalen Benutzermodus wird
~/.portless, im Root-Modus/tmp/portlessverwendet - Der Pfad kann mit
PORTLESS_STATE_DIRüberschrieben werden
- Im normalen Benutzermodus wird
- Bei der Konfiguration eines API-Proxys in Vite, webpack-dev-server usw. muss der
Host-Header umgeschrieben werden- Bei falscher Konfiguration weist eine Antwort
508 Loop Detectedauf das Problem hin
- Bei falscher Konfiguration weist eine Antwort
- Unterstützt Node.js 20 oder höher sowie macOS- und Linux-Umgebungen
- Monorepo-Struktur auf Basis von pnpm + Turborepo
- Apache-2.0-Lizenz, TypeScript-Codebasis (ca. 74 %)
7 Kommentare
Es wurde mit Unterstützung für Worktrees aktualisiert
https://github.com/vercel-labs/portless/releases/tag/v0.5.2
Jetzt erkennt es Worktrees automatisch und setzt den Branch-Namen vor den Host.
Es passt nicht gut zu Worktrees innerhalb desselben Projekts, deshalb nutze ich es nicht.
Ich dachte erst, die Zuweisung würde automatisch erfolgen, aber offenbar trägt man sie einfach manuell ein.
Ich nutze Caddy, daher gibt es für mich keinen besonderen Grund, dafür umzusteigen.
Ich nutze das zwar bereits mit
docker+traefik+mkcert, aber das hier scheint bequemer zu sein.Ein nützlicher Beitrag.
Heißt das, wir können uns jetzt von EADDRINUSE-Fehlern verabschieden?
Wenn man heutzutage über Agenten dieses und jenes entwickelt und ständig irgendwas startet, geraten die Dinger ja dauernd miteinander in Konflikt, haha
Da auf X darüber gesprochen wurde: Falls man es in Docker verwendet, soll es offenbar auch funktionieren, wenn man die PID des Docker-Daemons erzwungen übergibt.
https://github.com/vercel-labs/portless/issues/61