33 पॉइंट द्वारा xguru 2026-03-02 | 7 टिप्पणियां | WhatsApp पर शेयर करें
  • लोकल डेवलपमेंट के दौरान 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 आदि) PORT environment 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, --key options से custom certificate भी लगाया जा सकता है
  • command-oriented CLI interface दिया गया है
    • portless <name> <cmd> : दिए गए नाम से app चलाना
    • portless list : active routes की सूची दिखाना
    • portless proxy start/stop : proxy control
    • PORTLESS=0 environment variable से proxy bypass करके चलाया जा सकता है
  • state management directory के जरिए route और PID जानकारी store की जाती है
    • सामान्य user mode में ~/.portless, और root mode में /tmp/portless इस्तेमाल होता है
    • PORTLESS_STATE_DIR से path को redefine किया जा सकता है
  • Vite, webpack-dev-server आदि में API proxy setting करते समय Host header को rewrite करना ज़रूरी है
    • गलत setting होने पर 508 Loop Detected response के जरिए समस्या बताई जाती है
  • Node.js 20 या उससे ऊपर, macOS और Linux environment supported हैं
  • pnpm + Turborepo आधारित monorepo structure
  • Apache-2.0 license, TypeScript (लगभग 74%) codebase

7 टिप्पणियां

 
xguru 2026-03-05

इसे worktree support के साथ अपडेट किया गया है

https://github.com/vercel-labs/portless/releases/tag/v0.5.2

अब यह अपने-आप worktree को पहचानकर branch name को host के आगे जोड़ देता है

 
ragingwind 2026-03-02

यह उसी प्रोजेक्ट की worktree के साथ अच्छी तरह मेल नहीं खाता, इसलिए मैं इसका इस्तेमाल नहीं कर रहा हूँ।

 
ndrgrd 2026-03-02

मुझे लगा था कि यह अपने-आप असाइन कर देता होगा, लेकिन यह तो बस सीधे मैन्युअली रजिस्टर करने वाला तरीका है
मैं Caddy इस्तेमाल कर रहा हूँ, तो खास तौर पर इसके लिए इस पर स्विच करने की कोई वजह नहीं दिखती

 
ksc2601 2026-03-02

मैं यह काम पहले से docker + traefik + mkcert के साथ कर रहा था, लेकिन लगता है इसे इस्तेमाल करना ज़्यादा सुविधाजनक होगा।

 
bytecakelake 2026-03-02

काफ़ी उपयोगी लेख है।

 
xguru 2026-03-02

अब EADDRINUSE एरर से छुटकारा मिल गया क्या?
आजकल एजेंट्स के ज़रिए ये-वो डेवलपमेंट करते हुए लोग बहुत सारी चीज़ें चला देते हैं, तो वे आपस में टकरा जाती हैं और बड़ा हंगामा हो जाता है, हाहा

 
xguru 2026-03-02

X पर इस बारे में चर्चा हुई थी; अगर इसे Docker में इस्तेमाल कर रहे हों, तो Docker daemon PID को ज़बरदस्ती देकर यह भी काम करता है, ऐसा कहा गया है.

https://github.com/vercel-labs/portless/issues/61