什么是全局安装
安装位置
全局安装方式是键入命令:npm install gulp -g 或 npm install gulp --global,其中参数 -g 的含义是代表安装到全局环境里面,包安装在 Node 安装目录下的 node_modules 文件夹中,一般在 \Users\用户名\AppData\Roaming\ 目录下(linux 在 /usr/local 目录下),可以使用 npm root -g 查看全局安装目录。-
调用方式
全局安装后可以供命令行使用,用户可以在命令行中直接运行该组件包支持的命令,如下图全局安装 gulp 后的 cmd 文件,和 Node 的执行文件 node.exe 在同一个文件夹下。
注意:全局安装并不意味着可以从任何地方通过 require() 的方式引用。
什么是本地安装
安装位置
本地安装方式是键入命令:npm install gulp 或 npm install gulp --save-dev 等,其中参数 --save-dev 的含义是代表把你的安装包信息写入 package.json 文件的 devDependencies 字段中,包安装在指定项目的 node_modules 文件夹下。调用方式
本地安装后可以直接通过 require() 的方式引入项目中 node_modules 目录下的模块。
仅全局安装足够吗
在 js 实例代码中,默认下 node.js 会在 NODE_PATH 和目前 js 所在项目下的 node_modules 文件夹下去寻找模块,因此,如果只是全局安装,不能直接通过 require() 的方式去引用模块,需要手动解决包路径的配置问题,当然你也可以复制全局安装的 node_modules 文件夹到项目下,还有就是可以选择将环境变量的 NODE_PATH 设置为 C:\Program Files\nodejs。
对于包的更新不好管理,可能你需要为每个包重新命名,如 gulp@3.8.1、gulp@3.9.1...,为了区别不同项目使用指定的包,保证模块之间的相互依赖(这块下面会介绍),区别每个项目正常运行。
因此,不推荐只全局安装。
本地安装的重要性
本地安装利于管理版本,保证不同版本包之间的相互依赖。
举个例子
包版本为:
A(0.0.1) 依赖 B(0.0.2),B(0.0.1) 依赖 C(0.0.3)
一段时间原作者更新后,包版本为:
A(1.0.1) 依赖 B(1.0.0),B(1.0.0) 依赖 C(1.0.0)
每一次的更新可能带来不一样的功能,在多人合作、发布模块到 npmjs 社区、上传到 github 给其他人使用时,保留模块的版本信息(通过 package.json)可用于下载指定的版本号显得特别重要。
本地安装可以让每个项目拥有独立的包,不受全局包的影响,方便项目的移动、复制、打包等,保证不同版本包之间的相互依赖,这些优点是全局安装难以做到的。
另外,本地安装包对于项目的加载会更快。
有优点也少不了缺点,如每次新项目都要本地安装所依赖的包,安装包时间相对较长,一来是包太大导致下载慢;二是浪费了硬盘空间,不过现在电脑硬盘动不动就几个T,你还会在意节省这点空间吗?