Uso Node.js (tramite browserify) per ognuna delle mie app Web, tutte con alcune dipendenze comuni e altre specifiche per loro. Ognuna di queste app ha un file package.json
che specifica quali versioni di quali moduli ha bisogno.Come funziona l'installazione di npm
In questo momento, ho una directory /node_modules
nella cartella principale delle mie app per i moduli a cui tutti devono fare riferimento e quindi inserisco i moduli specifici delle app in una cartella node_modules
nella directory dell'app. Questo funziona bene a breve termine, dal momento che le mie istruzioni require()
sono in grado di continuare a guardare verso l'alto nella struttura dei file finché non trovano la directory node_modules
con l'app corretta.
Quando questo diventa complicato è quando voglio tornare a un vecchio progetto ed eseguire npm install
per assicurarsi che possa ancora trovare tutte le dipendenze di cui ha bisogno. (Chissà cosa divertente-business si è verificato da allora a livello di directory superiore.) Ho avuto l'impressione che npm install
fatto questo:
- per ogni modulo elencato nella
package.json
, prima verifica se è presente, salendo la directory allo stesso modorequire
fa. In caso contrario, installarlo nella directory localenode_modules
(creando tale directory se necessario).
Quando eseguo npm install
all'interno di una cartella di app, tuttavia, sembra installare tutto localmente indipendentemente da dove altro possa esistere a monte. È questo il comportamento corretto? (È possibile che ci sia un altro motivo, come il linguaggio di versione errato nel mio package.json
). Se questo è il comportamento corretto, c'è un modo per me di avere npm install
comportarsi come sopra?
Non è un grosso problema replicare ampiamente i moduli all'interno di ogni app, ma ci si sente in disordine e mi impedisce di apportare piccoli miglioramenti ai moduli comuni e di non dover aggiornare tutti i vecchi file package.json
. Naturalmente, questa potrebbe essere una buona cosa ...
Ecco il link.Per favore, passate a questo link. Questo potrebbe esserti utile. [https://www.npmjs.org/doc/cli/npm-shrinkwrap.html](https://www.npmjs.org/doc/cli/npm-shrinkwrap.html) –