Управление глобальными пакетами npm при использовании nvm

Мне кажется, что мне нужно установить глобальные пакеты npm отдельно в директорию 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.

my node -инспектор перестает работать!

$ npm update -g
<bunch of updating, succeeds>

Может быть, это поможет... Нет! все еще сломан. Вздох. Возможно... node -инспектор не работает для v0.11.16 (это выполняется на nvm). Может быть. Кто знает. Ну, пора прекратить.

$ 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

Хорошо.... Ну... Дерьмо.

Так или иначе, на данный момент я не ищу инструкции о том, как исправить. Я вполне могу быть взволнован. Главный вопрос здесь заключается в том, что я должен делать, чтобы управлять этими пакетами npm, которые предназначены для инструментов командной строки и которые скомпилировали компоненты, которые связаны с конкретными версиями? Я понимаю, что когда я устанавливаю nvm и включаю его в свою систему, моя оболочка может переключать ее $PATH, чтобы при вызове node и npm они запускались с использованием версии node, которую я выбрал.

Но похоже, что глобальные пакеты npm попадают в /usr/local/bin/ где-то, и они просто застревают там и становятся неспособными следовать тому, что я делаю с nvm. Хотя это может быть не так для "теоретически хорошо выполненный node пакет", на практике (по крайней мере, для node-inspector), похоже, что он с радостью взрывается, когда не выполняется с помощью node, который его установил.

Тем временем я должен в основном npm remove -g <package> && npm install -g <package> любой пакет, который я нахожу, ведет себя странно таким образом, каждый раз, когда я хочу запустить этот пакет в новой версии node, используя nvm.

Это кажется неправильным.

Это неправильно?

И результатом этого будет то, что каждый раз, когда я вызываю полномочия nvm для тестирования некоторого заданного приложения node.js с другой версией node, я в значительной степени должен это сделать, клонируя его в совершенно новом и в противном случае я, вероятно, узнаю, что мне нужно rm -rf node_modules && npm install просто сделать его вообще...

Ответ 1

Из справочного сообщения nvm:

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

Соответствующий флаг --reinstall-packages-from=<version>. Просто запустите команду (пример):

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

Ответ 2

Возможно, я неправильно понял вашу ситуацию, но вам кажется, что вам нужно установить все глобальные пакеты, которые вы используете отдельно для каждой версии node, которую используете. Причина этого в том, что вам могут понадобиться разные версии пакетов для разных версий node. Поэтому всякий раз, когда вы используете nvm use ..., он изменяет пути к глобальным пакетам для пакетов, установленных для выбранной версии node.

Надеюсь, что это поможет.