portless - पोर्ट नंबरों को नाम-आधारित .localhost URL से बदलने का टूल
(github.com/vercel-labs)- लोकल डेवलपमेंट के दौरान port conflict और कौन-सा पोर्ट इस्तेमाल किया था यह याद रखने की परेशानी को हल करने वाली Vercel Labs की open source utility
- हर development server को एक अलग app.localhost subdomain दिया जाता है, जिससे इंसान और AI agents दोनों के लिए समझने योग्य URL system मिलता है
next devसे चलाने परhttp://localhost:3000मिलता है और 3000 याद रखना पड़ता है, लेकिन
portless myapp next devचलाने परhttp://myapp.localhost:1355के रूप में access किया जा सकता है
portless api.myapp pnpm startकी तरह चलाने परhttp://api.myapp.localhost:1355के जरिए subdomain access भी supported है - यह proxy-based architecture पर काम करता है, जहाँ
portless proxyबीच में request route करता है- app चलने पर proxy अपने-आप शुरू हो जाता है, और हर app को random port (4000–4999) दिया जाता है
- ज़्यादातर frameworks (Next.js, Express, Nuxt आदि)
PORTenvironment variable को अपने-आप पहचान लेते हैं - Vite, Astro जैसे कुछ frameworks के लिए automatic flag injection से compatibility दी गई है
- HTTP/2 और HTTPS support के साथ तेज़ page load और सुरक्षित local communication
- browser आम तौर पर HTTP/1.1 में प्रति host 6 connections की सीमा रखते हैं
- Vite/Nuxt जैसे development servers, जो कई uncompressed files serve करते हैं, उनमें performance गिर सकती है
- HTTP/2 सभी requests को एक ही connection पर multiplex करता है
- certificate खुद बनाना और system trust store में register करना अपने-आप होता है
--cert,--keyoptions से custom certificate भी लगाया जा सकता है
- browser आम तौर पर HTTP/1.1 में प्रति host 6 connections की सीमा रखते हैं
- command-oriented CLI interface दिया गया है
portless <name> <cmd>: दिए गए नाम से app चलानाportless list: active routes की सूची दिखानाportless proxy start/stop: proxy controlPORTLESS=0environment variable से proxy bypass करके चलाया जा सकता है
- state management directory के जरिए route और PID जानकारी store की जाती है
- सामान्य user mode में
~/.portless, और root mode में/tmp/portlessइस्तेमाल होता है PORTLESS_STATE_DIRसे path को redefine किया जा सकता है
- सामान्य user mode में
- Vite, webpack-dev-server आदि में API proxy setting करते समय
Hostheader को rewrite करना ज़रूरी है- गलत setting होने पर
508 Loop Detectedresponse के जरिए समस्या बताई जाती है
- गलत setting होने पर
- Node.js 20 या उससे ऊपर, macOS और Linux environment supported हैं
- pnpm + Turborepo आधारित monorepo structure
- Apache-2.0 license, TypeScript (लगभग 74%) codebase
7 टिप्पणियां
इसे worktree support के साथ अपडेट किया गया है
https://github.com/vercel-labs/portless/releases/tag/v0.5.2
अब यह अपने-आप worktree को पहचानकर branch name को host के आगे जोड़ देता है
यह उसी प्रोजेक्ट की worktree के साथ अच्छी तरह मेल नहीं खाता, इसलिए मैं इसका इस्तेमाल नहीं कर रहा हूँ।
मुझे लगा था कि यह अपने-आप असाइन कर देता होगा, लेकिन यह तो बस सीधे मैन्युअली रजिस्टर करने वाला तरीका है
मैं Caddy इस्तेमाल कर रहा हूँ, तो खास तौर पर इसके लिए इस पर स्विच करने की कोई वजह नहीं दिखती
मैं यह काम पहले से
docker+traefik+mkcertके साथ कर रहा था, लेकिन लगता है इसे इस्तेमाल करना ज़्यादा सुविधाजनक होगा।काफ़ी उपयोगी लेख है।
अब EADDRINUSE एरर से छुटकारा मिल गया क्या?
आजकल एजेंट्स के ज़रिए ये-वो डेवलपमेंट करते हुए लोग बहुत सारी चीज़ें चला देते हैं, तो वे आपस में टकरा जाती हैं और बड़ा हंगामा हो जाता है, हाहा
X पर इस बारे में चर्चा हुई थी; अगर इसे Docker में इस्तेमाल कर रहे हों, तो Docker daemon PID को ज़बरदस्ती देकर यह भी काम करता है, ऐसा कहा गया है.
https://github.com/vercel-labs/portless/issues/61