当前位置:首页 > Nodejs 以及 node 包 本地模式和全局模式的区别

Nodejs 以及 node 包 本地模式和全局模式的区别

发布于 2018-04-13 阅读 306 次 npm NodeJs

简单来说

全局安装,就是需要在命令行使用命令的需要全局安装,这样才可以将包里bin目录和环境变量PATH链接,才能可以在命令行工具下运行shell命令。

对于nodejs本身安装的时候需要选择全局模式,否则需要手动配置PATH变量。

下面是摘自nodejs权威指南的片段:

在使用 npm 安装包的时候,有两种模式:

本地模式和全局模式。默认情况下我们使用 npm install命令就是采用本地模式,即把包安装到当前目录的 node_modules 子目录下。Node.js 的require在加载模块时会尝试搜寻 node_modules子目录,因此使用npm本地模式安装 的包可以直接被引用。
npm 还有另一种不同的安装模式被成为全局模式,使用方法为:

npm [install/i] -g [package_name]

与本地模式的不同之处

1.安装命令区别

就在于多了一个参数 -g。我们在 介绍 supervisor那个小节中使用 了 npm install -g supervisor 命令,就是以全局模式安装 supervisor。

2.全局模式安装的包并不能require

使用全局模式安装的包并不能直接在 JavaScript 文件中用 require 获 得,因为 require 不会搜索 /usr/local/lib/node_modules/。我们会在第 6 章 详细介绍模块的加载顺序。

3.使用 npm link 突破2的限制

1.npm 提供了一个有趣的命令 npm link,它的功能是在本地包和全局包之间创建符号链 接。我们说过使用全局模式安装的包不能直接通过 require 使用,但通过 npm link命令 可以打破这一限制。举个例子,我们已经通过 npm install -g express 安装了 express, 5 这时在工程的目录下运行命令:
2.除了将全局的包链接到本地以外,使用 npm link命令还可以将本地的包链接到全局。 使用方法是在包目录( package.json 所在目录)中运行 npm link 命令。如果我们要开发 一个包,利用这种方法可以非常方便地在不同的工程间进行测试。

$ npm link express ./node_modules/express -> /usr/local/lib/node_modules/express

我们可以在 node_modules 子目录中发现一个指向安装到全局的包的符号链接。通过这 种方法,我们就可以把全局包当本地包来使用了

为什么要使用全局模式呢?

多数时候并不是因为许多程序都有可能用到它,为了减少多 重副本而使用全局模式,而是因为本地模式不会注册 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命令了。