Sto sviluppando un modulo npm, dove l'utente può interagire con esso tramite un terminale per l'esecuzione di comandi:Dove devo memorizzare la cache di un modulo npm CLI personalizzato?
> mymodule init
> mymodule do stuff
Nell'eseguire determinati comandi utente viene chiesto per alcuni dati, che saranno utilizzati dal modulo. Dato che questi dati non cambieranno davvero durante l'uso del modulo e poiché questi comandi possono essere eseguiti abbastanza frequentemente, non è la migliore opzione per chiedere all'utente i dati ogni volta che esegue un comando. Quindi ho deciso di mettere in cache questi dati, e non appena dovrebbe vivere attraverso più chiamate di moduli, il modo più semplice per memorizzarlo che vedo è un file (la struttura dei dati consente di archiviarlo in un semplice JSON). Ma sono abbastanza sicuro di dove dovrebbe andare questo file sulla macchina di un utente.
Dove nel file system dovrei memorizzare una cache in una forma di un file o più file per un modulo npm personalizzato, considerando che il modulo stesso può essere installato globalmente, su più sistemi operativi e può essere utilizzato in più progetti allo stesso tempo?
Stavo pensando di archiviarlo nella cartella di un modulo, ma potrebbe essere complicato in caso di installazione globale + utilizzo di più progetti. La seconda idea era di archiviarla in un archivio di tmp specifico per il sistema operativo, ma non ne sono abbastanza sicuro. Mi sto anche chiedendo se ci sono alcune alternative alla memorizzazione dei file in questo caso.
Grazie per la risposta dettagliata. Ora capisco che una cartella tmp di sistema è una cattiva idea. Per quanto riguarda la domanda sui dati per progetto: sì, è un buon approccio per memorizzare il file di configurazione del modulo e altre informazioni che è univoco per il progetto nella sua radice, ma nel mio caso voglio fare una configurazione cross-project, quindi un utente potrebbe usarne una configurazione per più progetti o anche senza alcun progetto. Penso che sia un problema a parte, ma la cartella home del SO è sicuramente adatta per questo caso. –
Giusto, ho sentito che valeva la pena citare la best practice per la memorizzazione dei dati relativi ai progetti. Se non sei preoccupato di questo, allora salvalo nella cartella home dell'utente. Farlo come illustrato sopra renderà il sistema agnostico. – tsturzl