Nell'ultimo aggiornamento di npm, versione 7.0.0, sono state rilasciate importanti novità. Per installare l'aggiornamento è sufficiente installare Node.js 15 o lanciare da il comando.
npm install -g npm@7
Tra le tante novità, una di quelle più attese dagli sviluppatori è la possibilità di creare un workspace per i node modules condivisi tra più progetti.
Premettiamo che a monte di questa funzionalità vi è una completa ri-scrittura dei processi per la gestione della cartella node_modules, ora affidata alla libreria Arborist(https://github.com/npm/arborist), grazie alla quale è stata aggiunta l'installazione automatica di tutte le peer dependencies, sollevando lo sviluppatore dal doverle installare a mano. Il file package-lock ha subito profonde trasformazioni in quanto sarà possibile eseguire build deterministiche includendo tutto ciò che servirà al progetto per generare l'albero dei pacchetti e potremo anche fare riferimento ai file yarn.lock, prima ignorati, come sorgente dei pacchetti o modalità di risoluzione.
Come detto però, la più grande novità è la creazione di un Workspace sul modello di Yarn. Il workspace si può facilmente spiegare come un punto in comune in cui i pacchetti richiesti dai progetti verranno installati. Per l'inizializzazione occorerà creare il file package.json nella cartella root, specificando i percorsi dei vari applicativi tramite la proprietà workspaces, come nell'esempio seguente
Nel progetto A è stato dichiarata una dipendenza verso il progetto B, i quali sorgenti saranno referenziati tramite symlink nella cartella node_modules del workspace. Il workspace si prenderà in carico anche della gestione di pacchetti con diverso versionamento.
Osservando la struttura precedente notiamo che:
- il workspace prenderà in considerazione tutti i progetti nella cartella ./core e ./packages
- tutti i progetti in packages hanno dipendenze verso la stessa versione di ReactJS
- proj-a ha una dipendenza con la versione corrente del proj-b
- proj-c ha una dipendenza una versione precedente del proj-b
Da questa analisi possiamo già prevedere il risultato che sarà:
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare i nuovi piani dedicati di Azure Container Apps
Gestire i null nelle reactive form tipizzate di Angular
.NET Conference Italia 2023
Usare un KeyedService di default in ASP.NET Core 8
Recuperare un elemento inserito nella cache del browser tramite API JavaScript
Ottenere il contenuto di una cartella FTP con la libreria FluentFTP
Usare Refit e Polly in Blazor per creare client affidabili e fortemente tipizzati
Eseguire query verso tipi non mappati in Entity Framework Core
Configurare policy CORS in Azure Container Apps
Sfruttare lo streaming di una chiamata Http da Blazor
Load test di ASP.NET Core con k6
Eseguire una GroupBy per entity in Entity Framework