当前位置: 首页 > 后端技术 > Node.js

nodejs全局安装和本地安装的区别

时间:2023-04-03 23:42:13 Node.js

nodejs全局安装和本地安装的区别介绍,其中提到了全局安装(npminstallgulp-g)和本地安装(npminstallgulp)。下图来自Gulp中文网入门指南。可以看出,全局安装后,需要在本地安装gulp。一开始,我很困惑?为什么全局安装的gulp需要本地安装?不可以在项目中直接调用本地安装的包吗?带着疑惑,我在谷歌上搜索了相关的文档,凑合了各种杂七杂八的东西,才得到了一些端倪。下面我们来解决一些关于nodejs全局安装和本地安装的疑惑。如有错误,请注意并指正。本文以Windows平台为测试,以gulp为例制作教程目录。什么是全局安装(global),什么是本地安装(local)?为什么全局安装后还需要本地安装?全局安装就够了吗?安装(全局)安装位置全局安装方法是输入命令:npminstallgulp-g或npminstallgulp--global其中参数-g表示安装到全局环境中,包安装在node_modules中Node安装目录下的文件,一般在Users用户名AppDataRoaming目录下,可以使用npmroot-g查看全局安装目录。全局安装调用方法后,即可在命令行使用。用户可以直接在命令行运行组件包支持的命令,如下图所示。全局安装gulp后的cmd文件。什么是本地安装(local)安装位置本地安装方法是输入命令:npminstallgulp或npminstallgulp--save-dev等,其中参数的含义--save-dev表示写你的安装包信息放到package.json文件的devDependencies字段中,将包安装到指定项目的node_modules文件夹下。调用方法本地安装后,可以直接通过require()导入项目node_modules目录下的modules,如下例所示,本地安装后在gulpfile.js中直接require('gulp')。为什么全局安装后还需要本地安装?1、在js示例代码中,默认情况下node.js会在NODE_PATH下的node_modules文件夹和当前js工程中寻找modules。不能通过require()直接引用模块。需要手动解决包路径的配置问题。当然你也可以将全局安装的node_modules文件夹复制到项目中。还有一种方法是选择将环境变量的NODE_PATH设置为C:ProgramFilesnodejs。2.包的更新不易管理。你可能需要重命名每个包,比如gulp@3.8.1,gulp@3.9.1...,为了区分不同的项目,使用指定的包,保证模块之间的相互依赖关系(本节会介绍下面)区分每个项目正常运行。所以不建议只全局安装。本地安装的重要性最早的node.js/npm其实是全局的,包括现在兼容NODE_PATH,但是不能支持全局多版本,所以nodejs团队可能会改变本地安装方式来保证不同版本包之间的兼容性相互依存,是什么意思?比如weui组件中就有12个相互依赖的包。指定的依赖包版本号如下,不能轻易修改,因为不同版本的包对依赖包的版本有不同的作用。如果修改指定版本运行weui,可能会出现编译错误等bug。又如:包版本为: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被别人使用时,保持模块的版本信息可供下载指定版本号尤为重要。本地安装允许每个项目有一个独立的包,不受全局包的影响,方便项目的移动、复制、打包等,保证不同版本包之间的相互依赖。这些优势是全球安装难以实现的。另外,根据node团队的说法,本地安装包加载项目会更快。有优点也有缺点。比如每次新建项目需要在本地安装依赖包,安装包时间比较长。一是包太大,下载慢;二是浪费硬盘空间。几T,还心不在乎节省这个空间?