https://blog.csdn.net/jiang7701037/article/details/80706920
https://blog.csdn.net/xyr05288/article/details/72967160
使用npm root -g查看全局安装目录
一般安装在全局的都是有命令行需求的 package,但是具体项目中/局部的包需要本地安装是项目中需要使用的js包。
为什么全局安装后还要本地安装
仅全局安装足够吗
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命令默认情况下会将包安装到当前目录下,避免了不同程序依赖不同版本包的冲突;减少了包开发者API的兼容性的问题;缺点是会出现一个包安装多次的情况。
全局模式:提高程序重复利用,避免一个程序多个版本的情况;但是缺点是难以处理不同版本的依赖。