Dopo aver introdotto la piattaforma Replit e compreso le basi del workspace, è giunto il momento di approfondire tre strumenti fondamentali che ci permettono di sviluppare in modo efficiente e sicuro: la gestione delle dipendenze e delle porte.
Gestione delle Dipendenze
Quando iniziamo a lavorare su un nuovo progetto, spesso abbiamo bisogno di librerie esterne per aggiungere funzionalità specifiche. Replit semplifica questo processo grazie al suo strumento di gestione delle dipendenze.
Nel pannello "Dependencies", possiamo cercare e aggiungere pacchetti necessari al nostro progetto. Ad esempio, se stiamo sviluppando un'applicazione web in Python e vogliamo utilizzare Flask, possiamo semplicemente cercare "flask" e aggiungerlo al nostro progetto. Replit si occuperà di installare la libreria e renderla pronta all'uso. Aprendo un progetto e andando sul menu a sinistra, nell'icona selezionata nell'immagine in basso, cliccandoci vediamo la voce "Dependencies".

Gestione delle Dipendenze in Replit
Una volta aperta, quello che vedremo è una schermata simile a questa:

System Modules e System Dependencies
La prima parte della schermata è dedicata ai System Modules, ovvero moduli di sistema che forniscono il supporto per linguaggi di programmazione, formattatori e pacchetti. Questi moduli costituiscono la base dell’ambiente di sviluppo su Replit. Qui c’è il pulsante “+ Add new module” per aggiungere nuovi moduli e un link per aprire il file .replit, che è il file di configurazione del progetto.
La seconda sezione, System Dependencies, permette di aggiungere supporto aggiuntivo all’ambiente tramite pacchetti Nix. In questo esempio, è stata aggiunta una dipendenza di sistema: php82, cioè PHP versione 8.2.0, che è visualizzata in un riquadro. Accanto al nome e alla versione sono presenti delle icone per ottenere informazioni aggiuntive o rimuovere il pacchetto.
Sotto la lista delle dipendenze, troviamo il pulsante “+ Add new dependency” per aggiungere nuovi pacchetti Nix e il link "Open replit.nix", che consente di aprire e modificare direttamente il file replit.nix, dove sono dichiarate queste dipendenze. L'uso di moduli di sistema tramite Nix ci permette di aggiungere strumenti come ffmpeg o gcc al nostro ambiente di sviluppo.
Infine, in basso c'è un link informativo “Learn more about Nix and .replit configuration” che rimanda alla documentazione ufficiale, utile per approfondire la configurazione dell’ambiente tramite questi file.
Un aspetto interessante è la capacità di Replit di analizzare il nostro codice e suggerire automaticamente l'installazione di pacchetti mancanti. Se scriviamo, per esempio, import flask nel nostro script e non abbiamo ancora installato la libreria, Replit ci avviserà e ci proporrà di aggiungerla.
Per progetti più complessi o per esigenze particolari, possiamo utilizzare anche gestori di pacchetti specifici come pip o npm direttamente dal terminale integrato.
Universal Package Manager (UPM)
Replit utilizza il gestore di pacchetti universale, chiamato Universal Package Manager (UPM), per installare la maggior parte delle librerie e dipendenze di cui abbiamo bisogno nei nostri progetti. Questo strumento ci permette di lavorare in modo semplice e uniforme con diversi linguaggi di programmazione, senza doverci preoccupare troppo delle differenze tra un gestore e l’altro. Se vogliamo sapere quali linguaggi e gestori specifici sono supportati, possiamo consultare la documentazione ufficiale di UPM.
Se invece preferiamo lavorare da terminale, possiamo comunque utilizzare i gestori di pacchetti specifici per ogni linguaggio, come poetry per Python o npm per JavaScript. In questi casi, le modifiche che facciamo ai file di configurazione dei pacchetti verranno comunque rilevate dallo strumento "Dependencies" di Replit, anche se per aggiornare correttamente l’ambiente sarà necessario eseguire i comandi appropriati o premere il pulsante Run.
Gestione delle porte in Replit
Nel lavorare su Replit, dobbiamo tenere a mente che la gestione delle porte avviene in modo diverso rispetto a ciò a cui siamo abituati nei nostri ambienti locali. Quando eseguiamo un’applicazione sul nostro computer, solitamente specifichiamo una porta (come la 3000 o la 8080) e, se quella porta è associata all’indirizzo 0.0.0.0, diventa pubblicamente accessibile.
Su Replit, essendo tutto eseguito in un ambiente cloud isolato, le porte interne non sono automaticamente accessibili dall’esterno. Per far sì che le nostre applicazioni siano visibili nel browser o accessibili da internet, dobbiamo esporre esplicitamente una porta esterna e collegarla a una porta interna su cui la nostra applicazione sta ascoltando. Questo collegamento lo configuriamo nel file .replit, dove possiamo definire le sezioni [[ports]], indicando la localPort (porta interna) e la externalPort (porta pubblica).
Ad esempio, se la nostra app ascolta sulla porta 3000, possiamo fare in modo che Replit la esponga come porta 80, il che consente di raggiungerla semplicemente con il dominio principale, senza specificare alcuna porta nell’URL.
Un aspetto fondamentale è che il nostro programma deve ascoltare sull’indirizzo 0.0.0.0, altrimenti la porta esposta non funzionerà come previsto. Se invece l'applicazione ascolta su 127.0.0.1 (localhost), il traffico esterno non potrà raggiungerla, a meno che non configuriamo l’opzione exposeLocalhost = true.
Quando apriamo una nuova porta nel nostro progetto, Replit tende a collegarla automaticamente alla prima porta disponibile, solitamente la porta 80 per HTTP. Se apriamo altre porte, queste vengono mappate su porte come 3000, 5000, 8080, 5173 e così via. Se vogliamo avere il pieno controllo, possiamo sempre modificare manualmente il file .replit o usare lo strumento Networking, accessibile dall’icona dell’ingranaggio nella finestra di anteprima.
Facciamo un esempio pratico. Supponiamo di avere una web app React che, per impostazione predefinita, gira sulla porta 3000. Se nel file .replit configuriamo:
[[ports]]
localPort = 3000
externalPort = 80
significa che il traffico ricevuto su https://nome-progetto.replit.app (senza porta) verrà inoltrato alla nostra applicazione React. Se invece non facciamo questa configurazione, potremmo vedere un errore oppure la pagina non si caricherà correttamente.
È anche utile sapere che i deployment in modalità Autoscale o con Reserved VM supportano una sola porta esterna e che questa non deve essere localhost. Se non rispettiamo queste condizioni, il deployment fallirà. Per evitarlo, possiamo rimuovere tutte le altre configurazioni di porte esterne tranne quella necessaria.
Infine, quando qualcosa non funziona come ci aspettiamo, una delle prime cose da controllare è che la nostra applicazione stia effettivamente ascoltando sulla porta corretta. Capita spesso, per esempio, che un framework come Flask usi la porta 5000 di default, ma nel file .replit stiamo cercando di esporre la 3000. In quel caso il traffico non verrà instradato correttamente.
Gestire le porte su Replit è quindi un passaggio fondamentale per garantire che le nostre applicazioni web siano accessibili e funzionino correttamente. Con una configurazione attenta e una buona comprensione del funzionamento delle porte interne ed esterne, possiamo sfruttare al massimo l’infrastruttura cloud di Replit.
Conclusioni
In questa lezione abbiamo approfondito aspetti fondamentali per lavorare in modo efficace su Replit, partendo dalla gestione delle dipendenze fino alla configurazione delle porte. Con queste conoscenze possiamo lavorare su progetti sempre più complessi, mantenendo il controllo sia sull’ambiente che sull’accessibilità delle nostre applicazioni.
Se vuoi aggiornamenti su Dependency Management e Ports in Replit inserisci la tua email nel box qui sotto: