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