作者:白树
转载自http://www.cnblogs.com/PeunZh...

上一篇文章《npm 常用命令详解》主要是整理了最常使用的npm命令及相关介绍,其中有提到全局安装(npm install gulp -g)和本地安装(npm install gulp),下图来自Gulp中文网入门指南,可以看出全局安装后gulp后还要进行本地安装,一开始我疑惑了?为什么全局安装的gulp么,还要进行本地安装,难道不能在项目中直接调用本地安装的包?

带着疑惑,在google找了相关文档,杂七杂八凑合起来才有了点眉目,让我们一起解开nodejs全局安装和本地安装的一些疑惑,如果有讲错的地方,还请大家留意指正。

本文以Windows平台上做测试,以gulp为示例做教程

目录

  1. 什么是全局安装(global)
  2. 什么是本地安装(local)
  3. 为什么全局安装后还要本地安装
  4. 仅全局安装足够吗
  5. 本地安装的重要特性

什么是全局安装(global)

  • 安装位置

全局安装方式是键入命令:npm install gulp -g 或 npm install gulp --global,其中参数-g的含义是代表安装到全局环境里面,包安装在Node安装目录下的node_modules文件夹中,一般在 Users用户名AppDataRoaming 目录下,可以使用npm root -g查看全局安装目录。

  • 调用方式

全局安装后可以供命令行(command line)使用,用户可以在命令行中直接运行该组件包支持的命令,如下图全局安装gulp后的cmd文件。

什么是本地安装(local)

  • 安装位置

本地安装方式是键入命令:npm install gulp 或 npm install gulp --save-dev等,其中参数--save-dev的含义是代表把你的安装包信息写入package.json文件的devDependencies字段中,包安装在指定项目的node_modules文件夹下。

  • 调用方式

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

为什么全局安装后还要本地安装

  • 仅全局安装足够吗

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

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,你还会在意节省这点空间吗?

nodejs全局安装和本地安装的区别相关推荐

  1. node.js全局安装和本地安装的区别

    上一篇文章<npm 常用命令详解>主要是整理了最常使用的npm命令及相关介绍,其中有提到全局安装(npm install gulp -g)和本地安装(npm install gulp),下 ...

  2. oracle本地没装 配置,数据库--oracle安装配置(本地安装的步骤及各种问题解决方案)...

    "监听程序未启动"一般不会出现这种情况,可以在桌面左下角右键-->计算机管理-->服务和应用程序-->服务 查看OracleOraDb11g_home1TNSLi ...

  3. npm全局安装和本地安装和本地开发安装(npm install --g/--save/--save-dev)

    详细说明参考:http://www.cnblogs.com/PeunZhang/p/5629329.html 我个人理解: 1.全局安装(npm install -g)是为了用命令行,比如在windo ...

  4. npm全局安装和本地安装及卸载

    NPM是 1)npm是第三方模块的托管网站 1.node包括ECMAscript核心 2.全局成员 3.模块系统成员  (包括  核心模块,第三方模块,自定义模块) 2)npm是node包的管理工具  ...

  5. deb 安装_本地安装DEB包的3种命令行工具(适合Ubuntu和Deepin )

    请关注本头条号,每天坚持更新原创干货技术文章. 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 前言 在本教程中,我们将学习如何使用三种不同的命令行工具(d ...

  6. 本地在线安装mysql_本地安装MySql服务

    本地安装MySql服务 这里,简单介绍在本地服务器上安装MySql服务 ## 系统 CentOS 7.4 , 64位 ##声明 1.这是我们开发人员在华为云服务器进行测试成功可用的mysql安装命令组 ...

  7. IntelliJ IDEA 插件下载安装教程 在线安装和本地安装教程

    随着idea用户越来越多,许多插件可以方便我们日常的开发,idea本身就可以下载安装这些插件,话不多说,上教程!!! 在线安装 点击左侧 file-->settings 点击Plugins -- ...

  8. mac 本地安装mysql_mac 本地安装mysql服务

    安装 brew install mysql 启动mysyql服务 mysql.server start 也可以启动后台服务 ,开机后自动重启 brew services start mysql mys ...

  9. Tachyon安装:本地安装

    ----------此文章,笔者按着tachyon官网教程进行安装并记录. 分布式安装tachyon并运行例子:http://blog.csdn.net/u012587561/article/deta ...

最新文章

  1. 解读丨从自动驾驶到学习机器学习:科技发展的15大趋势
  2. 算法---------至少有K个重复字符的最长子串(Java版本)
  3. 基于傅里叶变换的音频重采样算法 (附完整c代码)
  4. STM32 电机教程 12 - BLDC 闭环电流控制
  5. Spring JDBC-混合框架的事务管理
  6. python安装依赖失败_python执行安装第三方依赖numpy失败:error: Unable to find vcvarsall.bat...
  7. Leetcode - 143. Reorder List
  8. java的io中replace咋么使用_Java.io.ObjectOutputStream.replaceObject()方法实例
  9. 阿里代码检查p3c插件使用
  10. 如何用计算机算分组数据方差,『分组数据如何Excel计算标准差』Excel表格求分组数据的方差...
  11. 精通 CSS+DIV 网页样式与布局 158
  12. 计算机如何快速切换窗口,如何快速切换电脑页面
  13. Oliver的救援【BFS】
  14. 新年新气象,努力奋上新时代
  15. Android学习网站(1)
  16. 单片机设计:基于stm32智能语音识别蓝牙音响(ld3320语音识别模块+mp3模块+喇叭+点阵屏+OLED+蓝牙+手机app)
  17. 【乐逍遥网站设计】90年代的网页设计有哪些变化?
  18. webpack将js混淆代码
  19. word中水印无法显示
  20. 2020 程序员找工作指南

热门文章

  1. 常见荧光定量 PCR 检测方法比较
  2. 第11天学习Java的笔记(数组注意事项)
  3. springboot不会运行gc_SpringBoot项目深度优化和Jvm调优
  4. war和war exploded区别
  5. 学习分布式不得不会的CAP理论
  6. java io文件操作_java IO 文件操作方法总结
  7. mysql root 不能登录_mysql root 用户不能登录的问题
  8. 【机器学习】集成学习代码练习
  9. 【NLP】GPT-3问世这一年,给世界带来的困扰与希望
  10. 温州大学《机器学习》课程课件(五、机器学习实践)