Gestione dei pacchetti globali di npm quando si utilizza nvm

Mi sento come se avessi bisogno di poter installare i pacchetti globali di npm separatamente nella directory NVM.

$ nvm install v0.11 ######################################################################## 100.0% Now using node v0.11.16 $ node-inspector Node Inspector v0.9.2 Visit http://127.0.0.1:8080/debug?port=5858 to start debugging. 

il mio ispettore di nodes ha smesso di funzionare!

 $ npm update -g  

Forse questo ti aiuterà … No! ancora rotto. Sospiro. Forse … node-inspector non funziona per un v0.11.16 (che viene eseguito su nvm). Forse. Chissà. Bene, tempo di abortire.

 $ nvm use system Now using system version of node: v0.10.32. $ node-inspector --version dyld: lazy symbol binding failed: Symbol not found: _node_module_register Referenced from: /usr/local/lib/node_modules/node-inspector/node_modules/ws/build/Release/bufferutil.node Expected in: dynamic lookup dyld: Symbol not found: _node_module_register Referenced from: /usr/local/lib/node_modules/node-inspector/node_modules/ws/build/Release/bufferutil.node Expected in: dynamic lookup [1] 93845 trace trap node-inspector --version 

Va bene …. Beh …. Merda.

Ad ogni modo, a questo punto non sto cercando istruzioni su come sistemare. Potrei essere sicuro La domanda principale qui è che cosa dovrei fare per gestire questi pacchetti npm che sono pensati per essere strumenti da riga di comando e che hanno compilato componenti che sembrano legati a versioni specifiche? Capisco che quando installo Nvm e lo incorporo nel mio sistema, la mia shell è in grado di cambiare il suo $PATH modo che quando chiamo node e npm , funzionino usando la versione del nodo che ho scelto.

Ma sembra che i pacchetti globali di npm vengano messi in /usr/local/bin/ da qualche parte e sono bloccati lì e non sono in grado di seguire quello che faccio con nvm – Anche se potrebbe non essere il caso per “teoricamente pacchetto di nodes ben educato “, in pratica (per qualcosa come node-inspector almeno) sembra sicuro che sia suscettibile di esplodere allegramente quando non viene eseguito utilizzando il nodo che lo ha installato.

Nel frattempo devo sostanzialmente npm remove -g && npm install -g qualsiasi pacchetto che trovo si comporta in modo strano in questo modo, ogni volta che voglio eseguire quel pacchetto con una nuova versione di nodo usando nvm .

Questo sembra sbagliato.

È sbagliato?

E, un corollario di questo sarebbe che ogni volta che invoco i poteri di nvm per testare una certa app node.js con una versione diversa del nodo, dovrei farlo praticamente clonandola in una directory completamente nuova e iniziando da zero, perché altrimenti Probabilmente scoprirò che ho bisogno di rm -rf node_modules && npm install solo per farlo funzionare a tutti …

Dal messaggio di aiuto di nvm:

 nvm install [-s]  Download and install a , [-s] from source. Uses .nvmrc if available --reinstall-packages-from= When installing, reinstall packages installed in  --lts When installing, only select from LTS (long-term support) versions --lts= When installing, only select from versions for a specific LTS line 

Il flag pertinente è --reinstall-packages-from= . Esegui semplicemente il comando (esempio):

 $ nvm install v6.9.2 --reinstall-packages-from=v4.4.5 

Potrei aver frainteso la tua situazione, ma sembra che tu abbia bisogno di installare tutti i pacchetti globali che usi separatamente per ogni versione di nodo che stai utilizzando. Il motivo per cui funziona in questo modo è che potresti aver bisogno di versioni diverse di pacchetti per diverse versioni di nodes. Quindi ogni volta che usi nvm use ... cambia i percorsi dei pacchetti globali ai pacchetti installati per la versione selezionata del nodo.

Spero che sia d’aiuto.