一.全局安装

实例:

npm install gulp -g

包安装在Node安装目录下的node_modules文件夹中,一般在 \Users\用户名\AppData\Roaming\ 目录下\npm\node_modules.
全局安装后可以供命令行(command line)使用,用户可以在命令行中直接运行该组件包支持的命令.

全局安装-g 就是只安装一次就行了,一般像工具类的比如 bower 我都会全局安装, 一般会安装在 /usr/local 或者你 node 安装的目录。

一般安装在全局的都是有命令行需求的 package,比如前边说的 bower,你需要在命令行中使用 bower 这个命令。

为什么全局安装后还要本地安装
仅全局安装足够吗

1.在js实例代码中,默认下node.js会在NODE_PATH和目前js所在项目下的node_modules文件夹下去寻找模块,因此,如果只是全局安装,不能直接通过require()的方式去引用模块,需要手动解决包路径的配置问题,当然你也可以复制全局安装的node_modules文件夹到项目下,还有办法可以选择将环境变量的NODE_PATH设置为C:\Program Files\nodejs。

2.对于包的更新不好管理,可能你需要为每个包重新命名,如gulp@3.8.1、gulp@3.9.1…,为了区别不同项目使用指定的包,保证模块之间的相互依赖(这块下面会介绍),区别每个项目正常运行。

二.局部安装

npm install --save-dev gulp

其中参数–save-dev的含义是代表把你的安装包信息写入package.json文件的devDependencies字段中,包安装在指定项目的node_modules文件夹下。

关于–save–dev和–save
–save是对生产环境所需依赖的声明(开发应用中使用的框架,库),–save-dev是对开发环境所需依赖的声明(构建工具,测试工具).正常使用npm install时,会下载dependencies和devDependencies中的模块,当使用npm install –production或者注明NODE_ENV变量值为production时,只会下载dependencies中的模块。

本地安装后可以直接通过require()的方式引入项目中node_modules目录下的模块,本地安装后直接在gulpfile.js中require(‘gulp’)。

本地安装的重要性

最早的node.js/npm实际上是全局的,包括现在还兼容NODE_PATH,但是不能支持全局多版本,于是nodejs团队改成本地安装的方法可能就是为了保证不同版本包之间的相互依赖,什么意思呢,举个例子weui组件中相互依赖的包就有12个。其中依赖包的指定版本号如下,不可轻易去修改,因为不同版本包对应依赖包的版本的功能有所差别,如果修改指定的版本来运行weui,就可能会编译出错等bug。

npm 全局安装 yarn 到什么路径下 npm全局安装和局部安装_命令行

本地安装可以让每个项目拥有独立的包,不受全局包的影响,方便项目的移动、复制、打包等,保证不同版本包之间的相互依赖,这些优点是全局安装难以做到的。

另外,据node团队介绍,本地安装包对于项目的加载会更快。

有优点也少不了缺点,如每次新项目都要本地安装所依赖的包,安装包时间相对较长,一来是包太大导致下载慢;二是浪费了硬盘空间,不过现在电脑硬盘动不动就几个T,你还会在意节省这点空间吗?

简而言之:
本地模式:npm命令默认情况下会将包安装到当前目录下,避免了不同程序依赖不同版本包的冲突;减少了包开发者API的兼容性的问题;缺点是会出现一个包安装多次的情况。

全局模式:提高程序重复利用,避免一个程序多个版本的情况;但是缺点是难以处理不同版本的依赖。