全局安装往往是安装一个工具,他不是安装在一个文件夹下,而是安装在某个全局环境下,如目前我的安装路径是:

C:\Users\cvter\AppData\Roaming\npm

  在这里,我们可以看到所有全局安装的工具,如webpack、babel-cli等等。

  全局安装在命令行中的任何地方都是可以直接调用的。因为安装之后,我们可以看到如下所示:

  这里是全局安装了的babel和webpack,可以看到在根目录下都有cmd后缀的文件,通过这些文件,我们就可以直接在命令行中使用了。 如使用 babel --version、   babel-doctor --version等等都是有效的,且不管你是在哪个目录文件下运行的。 

  

  但是局部安装并不是这样,往往是在一个项目中安装之后装入 ./node_nodules 下面, 然后在项目中,我们可以使用 require 等方式引入。这样的局限在于,只能是在本项目中使用,而webpack和babel这样的工具可以在各种情况、各种项目中使用。引用方式如下:

var gulp = require('gulp');
var less = require('gulp-less');

  引入之后我们保存到了gulp和less中,这样,我们就可以继续使用他们了。

  本地安装一般是 npm install webpack或者npm install webpack --save 或者 npm install webpack --save-dev等等,他们都是全局安装,区别仅在于是否将依赖存入dependencies以及devdependencies文件中去。

  在《http://www.cnblogs.com/zhuzhenwei918/p/6360226.html》这篇文章中,我们发现,先使用了全局安装webpack,然后在下面使用babel时又进行了本地安装。那么

  为什么已经全局安装了,还需要本地安装呢? 

  1、仅仅是全局安装够用吗?

  通常情况下的引入模块是分为两种来寻找的,一种就是全局模块,通过NODE_PATH下去寻找;还有一种就是通过./node_modules去寻找。 如果在项目中,我们希望使用require来表现这种明显的依赖关系,那么我们就必须使用安装来进行require,当然也是可以将全局安装的文件复制过来,但是这是非常麻烦的。 或者是使用..、.、/等这种相对或者绝对的方式来引入,这些无疑都是比较麻烦的,所以本地安装不够用。

  另外,我们也许在不同的项目中所需要的模块的版本是不同的,或者可能对某些模块进行重新命名,这就导致一个项目的重命名影响全局,这是不划算的。

  2、本地安装的重要性。

  因为我们需要的包可能有十个,他们之间相互依赖的,如果我们使用全局包,那么每次包的升级、更新等就会影响你的多个项目,那么依赖关系就会被破坏,所以使用本地安装有利于不同项目之间的独立性。

npm全局安装和局部文件安装区别的更多相关文章

  1. npm全局模块卸载及默认安装目录修改方法

    卸载全局安装模块  npm uninstall -g <package> 卸载后,你可以到 /node_modules/ 目录下查看包是否还存在,或者使用以下命令查看:npm ls npm ...

  2. 更改npm全局模块和cache默认安装位置

    来源于:http://blog.csdn.net/friendan/article/details/51736231 1.因为我安装的Node.js自带了npm,所以在nodejs文件夹里面新建以下两 ...

  3. npm全局模块卸载及默认安装目录修改

    卸载全局安装模块  npm uninstall -g <package> 卸载后,你可以到 /node_modules/ 目录下查看包是否还存在,或者使用以下命令查看:npm ls npm ...

  4. linux 安装Apache----tar.gz文件安装方式(零环境安装)

    一.下载apache源代码 1.下载地址:http://httpd.apache.org/download.cgi  找稳定的最新的版本(Stable Release) 得到文件 httpd-2.4. ...

  5. C#全局钩子和局部钩子记录

    源自:https://blog.csdn.net/programvae/article/details/80292076 最近碰巧要使用键盘钩子,于是在网上搜索了一番,发现大多数博客的文章都是雷同的, ...

  6. vue组件化初体验 全局组件和局部组件

    vue组件化初体验 全局组件和局部组件 vue组件化 全局组件 局部组件  关于vue入门案例请参阅 https://www.cnblogs.com/singledogpro/p/11938222.h ...

  7. npm 全局安装和局部安装的区别

    上图是从网上找的webpack 安装的步骤,我们看到除了要全局安装之外,还需要本地安装,那么这两者有什么区别呢? 本文以Windows平台上做测试,以webpack为示例做教程 什么是全局安装? 安装 ...

  8. MacOS安装react。问题 -- npm全局包的权限问题

    网上的教程有好多,在这里不一一列举,我只介绍我今天安装成功的步骤 首先,在安装react之前要先配置好node 1.安装node 在这里下载node的安装包https://nodejs.org/en/ ...

  9. node安装和npm全局配置

    本文章环境 windows10 64位家庭版 Node10.15.3LTS 安装包下载 Node官网 安装node 点击安装文件, 一键安装, 注意安装位置和添加到环境变量(xx to PATH)选项 ...

随机推荐

  1. Ubuntu 将应用程序 固定到快快速启动栏(以Sublime为例)

    因为Sublime Text并不是需要安装,所以缺少Ubuntu桌面运行的一些基本配置,比如不能将它加入桌面侧边的启动器. 而Ubuntu上也没有快捷方式的说法,而通过软件中心安装的软件就有图标,并能 ...

  2. 【图解HTTP】第一章 了解web及网络基础

    [图解HTTP]了解Web及网络基础 Web页面是如何呈现的?根据Web浏览器地址栏中指定的URL,Web浏览器从Web服务器端获取文件资源(resource)等信息,从而显示出Web页面. 这种通过 ...

  3. RPM管理,计划任务与性能监控

    =========== RPM 软件包管理: 相关命令: rpm -ivh 软件包名称 rpm -e 软件包名称     rpm -U 软件名称 软件包信息查询: 相关命令: rpm -q 查询指定软 ...

  4. copymemory()数组赋值

    在各网站的文章里面,见复制数据的方法中,有move的,有system.copy的,而要实际应用中,这两种方法,并不是很完美,会遇到一些问题,比如copy在记录里面的复制时,编译都过不去,而CopyMe ...

  5. nutch2.1+mysql+elasticsearch整合linux单机部署

    这次主要介绍下nutch2.1和mysql和elasticsearch的整合,是在单机上运行,并不是分布式部署.1.下载nutch2.1 nutch下载地址:http://labs.mop.com/a ...

  6. docker获取镜像很慢解决办法

    docker pull selenium/hub获取非常慢 可以使用docker中国的官方镜像加速 docker pull registry.docker-cn.com/selenium/hub 官方 ...

  7. table.insert(tableName, v)

    self.teammateList = {} for i=1,3 do local teammate = UI.CreateLuaWidget("Widget_TeammateInfo&qu ...

  8. GridView中文属性

    GridControl的中文属性: 1  Appearance 外观 Appearance 外观设置 ColumnFilterButton  行过滤器按钮 BackerColor  背景色 Backe ...

  9. 5.iptables--NAT

    开启Linux主机的核心转发功能 echo 1 > /proc/sys/net/ipv4/ip_forward SNAT相关操作 隐藏网内主机的IP地址,也可以共享互联网.如果只是共享IP的话, ...

  10. 跑monkey前开启/关闭系统通知栏

    @echo off cls title 别忘了跑monkey啊 :menu cls color 0A echo. .禁用systemui并重启 echo. .启用systemui并重启 echo. e ...