DEV Community

minnogit
minnogit

Posted on

Gestire la cache di npm e considerazioni per Docker

Quando si richiede di installare un pacchetto npm, questo viene scaricato da internet e salvato nella cartella di cache, se non è già presente, e poi installato nell'applicazione che lo richiede.
Dalla versione 5 di npm, la gestione della cache è self-healing per cui dovrebbe riconoscere eventuali pacchetti incompleti, danneggiati o obsoleti e, in tal caso, scaricarli nuovamente cercando anche di risolvere automaticamente le dipendenze nel modo migliore.
Tuttavia in alcuni casi, anche per risolvere problemi di installazione, è utile pulire la cache di npm con il comando:

$ npm --global cache verify
Cache verified and compressed (~/git/.npm/_cacache)
Content verified: 9127 (1525196266 bytes)
Content garbage-collected: 3491 (5398705346 bytes)
Index entries: 9129
Finished in 34.248s
Enter fullscreen mode Exit fullscreen mode

La cartella della cache normalmente è ~/.npm (nell'es. sopra è ~/git/.npm) ma è possibile spostarla.
Possono esserci diversi motivi per cui si potrebbe voler controllare il percorso della cache:

  1. la cartella può arrivare a occupare uno spazio considerevole e si potrebbe volerla spostare.
  2. si vuole usare una cartella di cache condivisa tra più host per velocizzare le installazioni.
  3. si vuole una cache condivisa tra gli utenti della stessa macchina.

Il comando per spostare la cartella di cache è:

npm config set cache nuovaCartella --global
Enter fullscreen mode Exit fullscreen mode

Al posto di modificare la configurazione del file di configurazione di npm, è anche possibile impostare il percorso della cache in una variabile di ambiente:

export npm_config_cache=/path/to/cache
Enter fullscreen mode Exit fullscreen mode

Dopo aver spostato la cache, lanciare il comando di verifica:

npm --global cache verify`
Enter fullscreen mode Exit fullscreen mode

E' possibile vedere la configurazione attuale con il comando:

npm config list
Enter fullscreen mode Exit fullscreen mode

Il comando di verifica non cancella pacchetti scaricati ma non più usati, perciò si potrebbe voler cancellare tutta la cache con il comando:

npm cache clean
Enter fullscreen mode Exit fullscreen mode

Considerazioni per Docker

Se stiamo usando Docker, è possibile impostare la cartella della cache con:

docker run -e npm_config_cache=/path/to/cache mydockerimage:tag
Enter fullscreen mode Exit fullscreen mode

In questo modo, il comando docker run consente di eseguire un container Docker configurato per utilizzare una specifica directory per la cache dei pacchetti npm.
Controllando dove i pacchetti vengono salvati, si può condividere la cache tra diversi container o host, ad esempio per ridurre il tempo di download dei pacchetti npm o per evitare di scaricare i pacchetti più volte.
Inoltre, ci permette di usare la stessa cartella di cache anche quando si avvia il container con un utente diverso da quello attuale (ogni utente ha la sua cartella di cache).

Top comments (0)