有人可以向我解释一下npm bin -g
命令和npm bin
命令之间的区别吗?
实际上,当我输入npm bin
时,我会c:\wamp\www\node\node_modules\.bin
。
当我输入npm bin -g
(这应该是" global")时,我得到c:\users\shmuli\appdata\roaming\npm
。
我假设"全球"意味着我可以在cmd中启动我的程序,而不必在其安装的特定目录中...全局安装是否具有与典型安装不同的安装目录?
这就是这里发生的事情吗?
答案 0 :(得分:1)
全局安装意味着将模块安装到全局文件夹中,该文件夹可以从任何目录运行的脚本访问。
除了拥有不同的目录外,全局安装还将为模块安装man
个页面,并为模块添加PATH变量。这就是为什么当模块具有命令行界面时,通常会指示您在安装时使用-g
。
例如,如果您从/path
运行脚本,并且在该文件夹中有一个名为foo
的模块,则只能在require('foo')
内使用/path
1}}。但是,如果您在全局安装foo
,则可以在文件系统的任何位置使用节点脚本中的require('foo')
,因为始终会检查全局模块文件夹。
请注意,如果您在本地和全局安装模块,并且它们是不同的模块,则模块系统将迭代文件树,直到它到达驱动器的根目录。这意味着将在全局安装的模块上使用本地安装的模块,因为本地安装的模块将首先解析为。
对于实际的npm bin
命令本身,它会打印包管理器将安装模块的路径。如果传递-g
标志,则会打印安装全局模块的路径。