当前位置:网站首页>实习打怪之路:nodejs中的npm全局安装和局部安装的意思,npm中的全局安装和局部安装的区别
实习打怪之路:nodejs中的npm全局安装和局部安装的意思,npm中的全局安装和局部安装的区别
2022-07-20 01:19:00 【The..Fuir】
在使用nodesjs的包管理器npm时,会有全局安装和局部安装,这两个到底是啥意思?对于初学者来说,会一头雾水,下面对其进行解释:
目录
1、全局安装:
(1)、局部安装
所谓全局安装,是指把模块安装到操作系统上,所谓的全局是指操作系统,因为,安装到操作系统后,整个计算机都可以使用了,所以,叫作全局。如:npm install webpack -g。就是全局安装webpack,其中,参数-g就是global的意思。
( 2)全局安装后安装到哪儿了?
全局安装完成后,一般会安装到AppData目录下,
如:我的计算机是:C:\Users\Administrator.PC\AppData\Roaming\npm。
每个人的计算机是不同的,主要的不同是:c:\users\Administrator.PC。users目录是汉字"用户"的目录,Administrator.PC,是你的用户,有的人的是“Administrator”。
假如,安装的是gulp,那么就会在C:\Users\Administrator.PC\AppData\Roaming\npm目录下有一个gulp.cmd(这个文件就是在命令行里输入gulp命令对应的文件,如:gulp -v),在C:\Users\Administrator.PC\AppData\Roaming\npm\node_modules目录下有一个gulp的文件夹,这个文件夹里是所有gulp相关的js文件。
假如,安装的是webpack,那么就会C:\Users\Administrator.PC\AppData\Roaming\npm目录下有一个webpack.cmd(这个文件就是在命令行里输入webpack命令对应的文件,如:webpack -v),在C:\Users\Administrator.PC\AppData\Roaming\npm\node_modules目录下有一个webpack的文件夹,这个文件夹里是所有webpack相关的js文件。
这里是全局安装了的babel和webpack,可以看到在根目录下都有cmd后缀的文件,通过这些文件,我们就可以直接在命令行中使用了。 如使用 babel –version、 vue –version等等都是有效的,且不管你是在哪个目录文件下运行的。
(3)、全局安装后,能干啥?
全局安装的目的是,在命令行里可以直接运行(当然需要配置环境变量,如果不会配置环境变量,我最后一步附上了)。如:我们可以直接输入gulp -v 或者webpack -v。
2、局部安装(本地):
(1)、局部安装
所谓局部安装?局部的意思是只针对当前项目(相当于局部变量之于函数一样)。
如:npm install webpack --save-dev,
(2)、局部安装到哪儿了?
这个一般大家都知道,局部安装后,就是把所有需要安装的js文件从互联网上拷贝到了你的项目文件夹下的node_modules文件夹下,为了让本项目中可以使用安装后的js文件的代码功能。
局部安装并不是这样,往往是在一个项目中安装之后装入 ./node_nodules 下面, 然后在项目中,我们可以使用 require 等方式引入。这样的局限在于,只能是在本项目中使用,而webpack和babel这样的工具可以在各种情况、各种项目中使用。引用方式如下:
var gulp = require('gulp'); var less = require('gulp-less');
(3)、局部安装能干啥?
局部安装的目的就是在项目中可以使用node_modules文件夹下js文件的代码。
如: var gulp = require("gulp");//这句引入的gulp.js文件就在本项目中的node_modules目录下的gulp文件夹下的bin下。
如: var webpack = require("webpack");//这句引入的webpack.js文件就在本项目中的node_modules目录下的webpack文件夹下的bin下。
4**.为什么已经全局安装了,还需要本地安装呢?**
(1)、仅仅是全局安装够用吗?
通常情况下的引入模块是分为两种来寻找的,一种就是全局模块,通过NODE_PATH下去寻找;还有一种就是通过./node_modules去寻找。 如果在项目中,我们希望使用require来表现这种明显的依赖关系,那么我们就必须使用安装来进行require,当然也是可以将全局安装的文件复制过来,但是这是非常麻烦的。 或者是使用..、.、/等这种相对或者绝对的方式来引入,这些无疑都是比较麻烦的,所以本地安装不够用。
另外,我们也许在不同的项目中所需要的模块的版本是不同的,或者可能对某些模块进行重新命名,这就导致一个项目的重命名影响全局,这是不划算的。
(2)、本地安装的重要性。
因为我们需要的包可能有十个,他们之间相互依赖的,如果我们使用全局包,那么每次包的升级、更新等就会影响你的多个项目,那么依赖关系就会被破坏,所以使用本地安装有利于不同项目之间的独立性。
参考原文链接:https://blog.csdn.net/u013594477/article/details/79861404参考原文链接:https://blog.csdn.net/jiang7701037/article/details/80706920
边栏推荐
- LeetCode_78_子集
- 机械制造企业,如何借助ERP系统解决仓库管理难题?
- [translation] dynamic query in C # expression
- [SWPU2019]Web1-1|SQL注入
- LeetCode_90_子集Ⅱ
- 开发者必读:2022年移动应用运营增长洞察白皮书
- xing号
- 2022年优秀灾难恢复解决方案
- CCTV news "Jinan rent quota invoice by hand" news channel_ People's network
- Voulez - vous assurer la sécurité des logiciels à faible coût? Cinq missions de sécurité méritent d'être examinées
猜你喜欢
Leetcode- number of occurrences of numbers in the array (single dog problem)
NET问答: C# 中是否有最高效的方式对大文件做 checksum ?
ViT【backbone】
机械制造企业,如何借助ERP系统解决仓库管理难题?
QT_qss文件简易使用教程
【故事证明和概率公理】
云计算与边缘计算有什么区别和联系?
PX4使用P900数传
Three principles CIOs should follow in order to successfully carry out digital transformation
jmeter 连接ORACLE数据库
随机推荐
CCTV news "Guangzhou rent quota invoice by hand" news channel_ People's network
我的书《Oracle Database In-Memory架构与实践》出版了
Under what circumstances is it necessary for enterprises to introduce distributed databases?
Web APIs DOM page special effects scrolling events and loading events
全局事件总线概述
[translation] dynamic query in C # expression
CCTV news "Qingdao opens catering quota invoice by hand" news channel_ People's network
Three principles CIOs should follow in order to successfully carry out digital transformation
PX4使用P900数传
冒泡排序和快速排序
CCTV news news news channel "Hangzhou opens catering quota invoice by hand"_ People's network
There are two key skills for high availability of microservices, which you must use
Web APIs DOM- 事件委托 +综合案例
CCTV news "Chongqing opens accommodation quota invoice by hand" news channel_ People's network
ADG备库可以进行数据泵导出吗?不可以
LeetCode_90_子集Ⅱ
Overview of global event bus
通过Shell实现MeterSphere Signature签名
英伟达NX使用笔记
LeetCode_78_子集