【原】nodejs全局安装和本地安装的区别

来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题。

转型后是这样的,团队成员更多需要去寻找业务的方向,思考能为商户或者业务做点什么来体现其身价值,这样的转变是机会也是挑战,我一直相信在特别的环境下能迅速磨练出了跨岗位技能和综合素质,然而一路走来也发现了自己的短板(所谓的产品思维),并非想提升就可以,有时候感到自己很无能。

于是这样熬过来,暗示自己保持积极乐观的心态,平时使用一些通用的方法来提醒自己,如多问自己为什么这样做,给自己定制一些小的目标等,心态好、思维清晰、目标明确。

虽然没有获得多大的成就,但必须看到自己在进步,除了技术进步外,关键还是自身的思想进步,本事长在自己身上,没有人抢得走。

进入正文~

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

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

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

目录

  • 什么是全局安装(global)
  • 什么是本地安装(local)
  • 为什么全局安装后还要本地安装
    • 仅全局安装足够吗
    • 本地安装的重要特性

什么是全局安装(global)

安装位置

全局安装方式是键入命令:npm install gulp -g 或 npm install gulp --global,其中参数-g的含义是代表安装到全局环境里面,包安装在Node安装目录下的node_modules文件夹中,一般在 \Users\用户名\AppData\Roaming\ 目录下,可以使用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 Files\nodejs。

2.对于包的更新不好管理,可能你需要为每个包重新命名,如[email protected]、[email protected],为了区别不同项目使用指定的包,保证模块之间的相互依赖(这块下面会介绍),区别每个项目正常运行。

因此,不推荐只全局安装。

本地安装的重要性

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

参考资料:

Why do we need to install gulp globally and locally?

npm 1.0: Global vs Local installation

Skip local installation of Gulp

为什么 npm 要为每个项目单独安装一遍 node_modules?

Windows系统下nodejs安装及配置

时间: 2024-10-12 03:25:03

【原】nodejs全局安装和本地安装的区别的相关文章

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

转自:http://www.cnblogs.com/PeunZhang/p/5629329.html 来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的方向,思考能为商户或者业务做点什么来体现其身价值,这样的转变是机会也是挑战,我一直相信在特别的环境下能迅速磨练出了跨岗位技能和综合素质,然而一路走来也发现了自己的短板(所谓的产品思维),并非想提升就

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

npm的包安装分为本地安装(local).全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已,比如:代码如下:复制代码npm install # 本地安装npm install -g # 全局安装 下面分别解释.全局安装:npm install xxx -g 时, 1. 模块将被下载安装到[全局目录]中.2. 可以直接在命令行里使用 注,[全局目录]通过 npm config set prefix "目录路径" 来设置:通过 npm config get prefi

npm中全局安装和本地安装的区别

1.包管理工具 2.主要作用:下载别人的编写的包和命令行,同时自己也可以上传. 3.常用指令: 1.npm -v查看版本(任何包都可以用npm xxx -v 来查看版本) 2.npm install xxx -g 安装xxx包或者框架.-g全局安装.安装完以后就在node_modules目中了. 全局安装和本地安装的区别: 1.安装方式不同. npm install xxx -g(全局) npm install xxx 或 npm istall xx -save -dev 这种写法会把安装包信息

npm(cnpm)全局安装和本地安装的区别

全局安装: npm的包安装分为本地安装(local).全局安装(global)两种,从敲的命令行来看,差别只是有没有 -g 而已 安装方式: npm i package-name -g  ||  npm install  package-name -global      参数 -g 代表安装到‘全局环境中 安装位置 : 包安装在Node安装目录下的node_modules文件夹中,一般在 \Users\用户名\AppData\Roaming\ 目录下 可以使用npm root -g查看全局安装

nodejs全局安装与本地安装区别

本地安装 1. 将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成 node_modules 目录. 2. 可以通过 require() 来引入本地安装的包. 全局安装 1. 将安装包放在 /usr/local 下. 2. 可以直接在命令行里使用. 3. 不能通过 require() 来引入本地安装的包.

全局安装与本地安装

全局安装 全局安装的软件包可以在任何目录下使用,一般情况下,用于安装提供命令行工具的软件包.全局安装的软件包不能使用require()方法导入到项目中. npm install http-server --global 例如,上面的命令全局安装了一个http-server软件包,该软件包提供了一个http-server命令,可以在任意目录下打开一个http服务器,并托管该目录下的所有静态资源. 本地安装 软件包会被安装到项目的node_modules/目录下. 安装成开发阶段的依赖 如果我们只是

Mac 迪士尼平台搭建安装 Homestead本地安装

Homestead Mac迪士尼平台搭建论坛:haozbbs.com Q1446595067 在线安装 Homestead Vagrant Box,这样安装下载会非常慢,可以使用本地文件安装方式 vagrant box add laravel/homestead 1 然后把你的box盒子拖拽到iterm里面 路径会自动补全如下 vagrant box add laravel/homestead /Users/guobao/solf/homestead.box 1 这里写图片描述 查看安装的box

全局索引和本地索引的区别

Oracle数据库中,有两种类型的分区索引,全局索引和本地索引,其中本地索引又可以分为本地前缀索引和本地非前缀索引.下面就分别看看每种类型的索引各自的特点. 全局索引以整个表的数据为对象建立索引,索引分区中的索引条目既可能是基于相同的键值但是来自不同的分区,也可能是多个不同键值的组合. 全局索引既允许索引分区的键值和表分区键值相同,也可以不相同.全局索引和表之间没有直接的联系,这一点和本地索引不同. SQL> create table orders (     order_no      num

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

oracle版本:Oracle 11g 本地电脑配置:安装内存8G 64为操作系统win8.1 下载Oracle 11g压缩包: 1 网址http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 如果上面链接失效www.oracle.com官网在menu菜单下打开Developers->develper resources 接着在导航栏technologies->databases打开滑