Node.js:npm bin -g命令

有人可以向我解释npm bin -g命令和npm bin命令之间的区别吗?

实际上,当我inputnpm bin我得到了c:\wamp\www\node\node_modules\.bin

当我inputnpm bin -g (应该是“global”)时,我得到了c:\users\shmuli\appdata\roaming\npm

我假设“全局”意味着我可以启动我的程序在CMD中,而不必在它所安装的特定目录中…全局安装有不同于典型安装的安装目录吗?

这是怎么回事?

全局安装意味着将模块安装到可从任何目录运行的脚本访问的全局文件夹中。

除了具有不同的目录之外,全局安装还将为模块安装man页,并为模块添加PATHvariables。 这就是为什么当模块具有命令行界面时,通常会指示您在安装时使用-g

例如,如果您正在从/path运行脚本,并且在本地安装了一个名为foo的模块,则只能在/path使用require('foo') 。 但是,如果全局安装了foo ,则可以使用文件系统上任意位置的脚本中的require('foo') ,因为始终会检查全局模块文件夹。

请注意,如果您在本地和全局安装模块,并且它们是不同的模块,则模块系统将迭代文件树,直到到达驱动器的根目录。 这意味着本地安装的模块将在全局安装的模块上使用,因为本地安装的模块将首先被parsing。


至于实际的npm bin命令本身,它将打印包pipe理器将安装模块的path。 如果您传递了-g标志,那么它将打印全局模块安装到的path。