使用nvm时管理全局npm包

Ste*_* Lu 13 node.js npm

我觉得我需要能够将全局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.
Run Code Online (Sandbox Code Playgroud)

我的节点检查员停止了工作!

$ npm update -g
<bunch of updating, succeeds>
Run Code Online (Sandbox Code Playgroud)

也许这会有所帮助......不!仍然破碎.叹.也许...... node-inspector不适用于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
Run Code Online (Sandbox Code Playgroud)

好的....好吧......妈的.

所以无论如何,在这一点上,我不是在寻找如何修复的说明.我可能会受到冲击.这里的主要问题是我应该做些什么来管理这些npm包,它们是命令行工具,哪些编译组件看起来与特定版本绑定?我明白,当我安装NVM,并将其整合到我的系统,我的壳是可以切换的$PATH,这样,当我打电话nodenpm,他们将运行使用节点版本我挑.

但似乎全局的npm软件包被放到/usr/local/bin/某个地方并且它们只是停留在那里并且无法跟随我的工作nvm- 虽然它可能不是"理论上表现良好的节点包"的情况,练习(对于node-inspector至少类似的东西),当使用安装它的节点没有执行时,它看起来很可能会兴高采烈地爆炸.

与此同时,基本上我必须以npm remove -g <package> && npm install -g <package>这种方式表现出奇怪的任何包,每次我想在新的节点版本下运行该包nvm.

这似乎是错的.

这是错的吗?

而且,这样做的必然结果是,每当我调用nvm权限来测试某个节点的不同版本的给定node.js应用程序时,我几乎应该通过将其克隆到一个全新的目录并开始新的来实现,否则我可能会发现我需要rm -rf node_modules && npm install让它完全发挥作用......

sea*_*tes 6

从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
Run Code Online (Sandbox Code Playgroud)

相关的标志是--reinstall-packages-from=<version>.只需重新运行命令(示例):

$ nvm install v6.9.2 --reinstall-packages-from=v4.4.5
Run Code Online (Sandbox Code Playgroud)

  • 现在它已更改为“nvm reinstall-packages &lt;from-version&gt;” (2认同)