Utilitar nativ macOS

PortClear

Vezi ce server a rămas pornit din greșeală și ce port ocupă — apoi cât spațiu îți mănâncă node_modules.

Găsește procesele Node rămase în fundal și porturile pe care le țin ocupate, cu un buton ca să le eliberezi. În plus, scanează un folder, îți arată fiecare node_modules cu dimensiunea și data ultimei folosiri, și le șterge pe cele de care nu mai ai nevoie.

porturi active — dev
:3000 · next dev · 2h
:5173 · vite · 45m
:8080 · nodemon · 12m
:4321 · npm run dev · 3h
scroll
Problema

Portul nu se eliberează singur

Portul 3000 e ocupat și nu știi de la ce proces. Alternativa e lsof -i :3000 urmat de kill, de fiecare dată.

node_modules nu se curăță singur. Se adună în fiecare proiect la care ai lucrat vreodată, iar Finder-ul nu-ți spune care e vechi și care e în uz.

Cum funcționează

Șase pași, în ordinea în care se întâmplă

De la deschidere până la portul eliberat — fiecare pas rulează local, pe Mac-ul tău.

01ScaneazăSe deschide direct pe lista porturilor de dezvoltare active — 19 porturi cunoscute (3000, 5173, 8080, 4200, 19000, 4321, 24678, …).
02IdentificăPentru fiecare port arată ce proces îl ține, de cât timp rulează și din ce folder.
03SemnaleazăProcesele care par uitate sunt marcate — cu motivul exact pentru care au fost semnalate, nu doar un triunghi de avertizare.
04ConfirmăÎnainte să oprești ceva, vezi lista proceselor vizate: tip, PID, uptime, port, folder de lucru și motivul semnalării.
05ElibereazăFree port trimite SIGTERM. Dacă procesul e blocat, un al doilea buton trimite SIGKILL.
06CurățăSeparat, scanează un folder pentru node_modules uitate și le trimite la Coș, cu spațiul recuperat confirmat înainte.
Ce face

Trei module, un singur scop

Ai primit Error: listen EADDRINUSE: address already in use :::3000 și nu știi ce proces ține portul ocupat. PortClear rezolvă asta dintr-o privire — și, în plus, curăță și zecile de foldere node_modules uitate prin proiecte vechi.

01

PortClear găsește procesele Node de pe Mac — Next.js, Vite, NestJS, nodemon, npm — cu PID-ul, porturile ascultate, de cât timp rulează și cât consumă. Le poți opri de acolo, fără să cauți în terminal ce ține ocupat portul 3000.

02

Al doilea modul rezolvă o problemă înrudită: zecile de foldere node_modules uitate prin directoare la care nu te-ai mai întors de luni de zile, fiecare cu sute de megabytes. PortClear scanează un folder ales și îți arată fiecare node_modules găsit: cât ocupă, când a fost accesat ultima dată, și în ce proiect stă. Le poți sorta, grupa pe proiect, deschide în Finder, și șterge — individual sau în masă, cu confirmarea spațiului recuperat.

03

Al treilea îți arată un grafic cu distribuția spațiului pe proiecte, ca să vezi dintr-o privire unde s-a adunat.

Funcționalități

Porturi și spațiu, într-un singur loc

Găsește procesele Node rămase pornite: PID, porturi, uptime, memorie

Oprește procesele direct din aplicație, fără terminal

Scanare recursivă cu dimensiune și dată de ultim acces per folder

Grupare pe proiect, cu subtotaluri și sortare pe coloane

Ștergere individuală sau în masă, cu spațiul recuperat confirmat înainte

Grafic cu distribuția spațiului pe proiecte

Sare peste directoare ascunse și legături simbolice, ca să nu intre în bucle

Rulează local, fără cont, fără telemetrie, fără dependențe externe

De ce poți avea încredere

Verificabil în cod, nu doar promis aici

Cinci lucruri care se pot verifica direct în sursa aplicației.

Spune de ce, înainte să acționeze

Fiecare confirmare de oprire listează procesele vizate — tip, PID, uptime, port, folder de lucru — și motivul exact pentru care fiecare a fost semnalat, înainte să apeși pe oprește.

Sources/PortClear/UI/PortsView.swift — commit 404791b

Nu trimite nimic despre tine

Scanarea, ștergerea și verificarea licenței rulează în întregime pe Mac-ul tău: nu există niciun apel de rețea în codul aplicației, deci nici telemetrie, nici cont. Singura conexiune pe care o poate face e căutarea de actualizări, pornită de tine din meniu — verificarea automată e oprită implicit.

Sources/ — zero URLSession, NWConnection sau socket; Sparkle în App/Updater.swift, SUEnableAutomaticChecks = false

Scanarea nu intră în ce a găsit

Un `node_modules` găsit nu mai e parcurs pe dinăuntru, iar o scanare oprită se oprește chiar acolo — amândouă sunt fixate de teste care lucrează pe foldere reale, create și șterse în test, nu pe obiecte simulate.

Tests/PortClearTests/ScannerTests.swift — neverDescendsIntoAFoundNodeModules, aCancelledScanStopsEarly

Legăturile simbolice nu sunt urmate la ștergere

Ștergerea unui node_modules care e o legătură simbolică elimină doar legătura; folderul țintă rămâne intact — verificat, în ambele moduri de ștergere.

Tests/PortClearTests/DeletionTests.swift

Binar universal, macOS 14+

Build-ul livrat rulează nativ pe Intel și pe Apple Silicon, fără emulare Rosetta.

`lipo -archs` pe PortClear.app din DMG-ul servit — x86_64 și arm64; Package.swift:10

Semnată de noi, notarizată de Apple

Build-ul pe care îl descarci de aici e semnat cu Developer ID și notarizat de Apple — se deschide cu un dublu-clic obișnuit la prima rulare, fără clic-dreapta și fără avertisment de la macOS.

`spctl -a -t exec` pe PortClear.app din DMG-ul servit → accepted, Notarized Developer ID (83S677R8NP)

Ce nu face încă

Limitele versiunii de azi

Un instrument care spune ce nu poate face e mai ușor de crezut pe ce poate.

Oprește doar procese din ecosistemul Node — Docker, Rails, Postgres sau un JVM rămas pornit sunt raportate, dar nu pot fi oprite din aplicație.Scop
Semnalarea automată merge pe o listă fixă de porturi de dezvoltare, scrisă în cod; un port care nu e pe listă nu e semnalat singur și trebuie căutat prin caseta de căutare.Listă fixă
Verificarea automată de actualizări există în cod (Sparkle), dar e oprită implicit.Dezactivat

Verificat în build-ul servit — aplicația și Info.plist din PortClear 0.3.2, 11 septembrie 2026 — nu e o promisiune pentru o versiune viitoare.

Cerințe
Sistem
macOS 14.0 sau mai nou
Binar
Universal — Intel și Apple Silicon
Rețea
Nu e necesară — tot ce face rulează local
Întrebări

Întrebări frecvente

Detectorul e o euristică și poate greși — de-asta fiecare confirmare de oprire arată procesul (tip, PID, uptime, folder) și motivul exact al semnalării, nu doar un buton „oprește tot”.

Nu. Nu există niciun apel de rețea în cod, la nicio etapă. Tot ce vezi vine din `ps` și `lsof`, rulate local, pe Mac-ul tău.

Se șterge doar legătura; folderul țintă rămâne intact. E marcat separat în listă și numără 0 B recuperabil, ca să nu te înșele cifra.

Le poate raporta dacă țin un port cunoscut, dar nu le poate opri — aplicația oprește doar procese din ecosistemul Node. Pentru restul, `lsof -i :PORT` rămâne calea.

Nu. Aplicația e semnată cu Developer ID și notarizată de Apple, deci un dublu-clic obișnuit o deschide de prima dată — fără clic-dreapta și fără avertisment de la macOS.

Construit cu
SwiftSwiftUImacOS

Aplicație nativă de macOS — niciun browser, niciun server intermediar.

Obține aplicația

Eliberează portul acum

29 €

+ TVA, calculat la finalizare după țara ta

Activare

Cum activezi licența

Descarcă aplicația

Descarcă versiunea 0.3.3

2.5 MB

Deschide aplicația, mergi la Preferințe → Licență și lipește cheia primită pe email.