日期:2014-05-16 浏览次数:20387 次
但缺陷则是同一个包可能会被安装许多次。
在使用 npm 安装包的时候,
有两种模式:
本地模式和全局模式。
默认情况下我们使用 npm
即把包安装到当前目录的 node_modules 子目录下。
Node.js
install命令就是采用本地模式,
的 require 在加载模块时会尝试搜寻 node_modules 子目录,因此使用 npm 本地模式安装
的包可以直接被引用。
npm 还有另一种不同的安装模式被成为全局模式,使用方法为:
npm [install/i] -g [package_name]
与本地模式的不同之处就在于多了一个参数 -g。
我们在 介绍 supervisor那个小节中使用
了 npm install -g supervisor 命令,就是以全局模式安装 supervisor。
为什么要使用全局模式呢?多数时候并不是因为许多程序都有可能用到它,
为了减少多
重副本而使用全局模式,而是因为本地模式不会注册 PATH 环境变量。举例说明,我们安装
supervisor 是为了在命令行中运行它,譬如直接运行 supervisor script.js,这时就需要在 PATH
环境变量中注册 supervisor。npm 本地模式仅仅是把包安装到 node_modules 子目录下,其中
的 bin 目录没有包含在 PATH 环境变量中,不能直接在命令行中调用。而当我们使用全局模
式安装时,
npm 会将包安装到系统目录,
譬如 /usr/local/lib/node_modules/,
同时 package.json 文
件中 bin 字段包含的文件会被链接到 /usr/local/bin/。/usr/local/bin/ 是在PATH 环境变量中默认
定义的,因此就可以直接在命令行中运行 supervisor script.js命令了。
使用全局模式安装的包并不能直接在 JavaScript 文件中用 require 获
得,因为 require 不会搜索 /usr/local/lib/node_modules/。
总而言之,当我们要把某个包作为工程运行时的一部分时,通过本地模式获取,如果要
在命令行下使用,则使用全局模式安装。