我是靠谱客的博主 醉熏外套,最近开发中收集的这篇文章主要介绍了解两个强大的Node包管理器:npm 和 yarn,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本篇文章带大家了解一下Node.js的两个强大包管理器:npm 和 yarn,希望对大家有所帮助!

学习Node的第一步就是要了解node的包管理器npm,对于npm相信大家并不陌生,因为我们常用它去下载一些包资源

但因为npm的资源库(https://www.npmjs.com/)在国外,使用它下载资源的速度比较慢,于是就出现了yarn这些第三方node包管理器以及国内的跟npm仓库同步更新的淘宝镜像(cnpm)

接下来我们就将深入去学习这些内容,让我们开始吧!

一、npm的使用

npm是什么

使用npm前首先要了解什么是npm,在Node系列专栏的第一篇文章【Node.js | 从前端到全栈的必经之路】中提到npmNode的开源仓库,并且是全球最大的开源仓库

截至2020年3月17日,npm为大约1200万开发人员提供了130万个软件包,这些开发人员每月下载这些软件包达750亿次

要想去下载使用npm仓库里面的资源可以使用npm的指令npm开头的,如npm i axios 下载axios)或使用其它第三方的指令(第三方的Node包管理器),如yarn等

在我们配置NodeJS环境时,npm指令模块是随着NodeJS一起安装的,我们可以通过终端运行npm -v 查看安装的版本:

在这里插入图片描述

但如果默认安装的npm版本太老,你也可以自己手动安装更新npm

npm i npm@latest -g
登录后复制

上面可以发现一个神奇的事情,我们正在通过npm安装npm,自己安装自己?

这其实很好理解,npm的指令模块也是作为一个包存放于npm这个仓库中的,并且这个包的名字就叫npm,见npm地址:https://www.npmjs.com/package/npm

在这里插入图片描述

所以我们一般称呼的npm都只是指npm的这个指令模块(这个名为npm的包)

npm常用指令

  • npm init :生成package.json

    在这里插入图片描述

  • npm install下载package.json中记录的所有资源

  • npm install 包名下载指定的包到当前目录下

  • npm uninstall 包名卸载当前目录下指定的包

  • npm update 包名更新当前目录下指定的包,不加包名则更新当前目录下所有包

  • npm outdated 包名检查当前目录下指定包是否过时,不加包名则检查当前目录下所有包

  • npm info 包名获取当前目录下包的详细信息

  • npm list查看当前目录下安装的所有包及其依赖并显示版本号list可简写为ls

  • npm list 包名查看当前目录下安装的指定包的版本号list可简写为ls

几点补充:

  1. install可简写为i,如:npm install axios可简写为npm i axios

  2. uninstall 可简写为un

  3. 在包名后加@符可指定包的版本,如:npm i md5@1下载1版本的md5,npm i md5@latest表示下载最新版本的md5

npm指令后缀

  • -g:指定全局环境

  • --save可简写为-s : 指定 生产环境 下的依赖(记录在dependencies中)

  • --save-dev可简写为-D:指定开发环境下的依赖(记录在devDependencies中)

  • --save-prod可简写为-P:与--save相同

  • --save-optional可简写为-O:指定可选依赖(记录在optionalDependencies中)

  • --no-save:不会记录在package.json

依赖包管理

npm 中,熟知的依赖是 :dependenciesdevDependencies

除此之外,其实还有包括 :

  • peerDependencies,
  • optionalDependencies
  • bundledDependencies / bundleDependencies

在内的几种依赖,这些都是在package.json中进行记录的:

在这里插入图片描述

上面我们说npm指令后缀时提到了这几种依赖,这里详细说一下它们代表什么:

dependenciesdevDependencies

peerDependencies

optionalDependencies

bundledDependencies / bundleDependencies

package.json中需要注意的包版本问题

通过npm下载的所有包的版本信息都会记录在package.json

在运行npm i时就会根据package.json中记录的包信息进行下载,它的下载规则如下:

  • 包版本以^开头时(默认情况),会锁定大版本

       // package.json
      "dependencies": {
        "md5": "^2.1.0" // ^开头的
      },
    登录后复制
  • 包版本以~开头时,会锁定到第二个大版本

       // package.json
      "dependencies": {
        "md5": "~2.1.0"
      },
    登录后复制
  • 包版本为*,会锁定到最新版本

      // package.json
      "dependencies": {
        "md5": "*"
      },
    登录后复制
  • 包版本前不带前缀,会锁定到指定版本

       // package.json
      "dependencies": {
        "md5": "2.1.0"
      },
    登录后复制

解决npm速度慢的问题

因为npm仓库在国外,我们在国内使用npm指令下载这个国外仓库的内容速度会比较慢

这时我们就可以运行以下指令将npm的仓库源切换到国内的淘宝镜像(cnpm) 的源:

npm config set registry https://registry.npmmirror.com
登录后复制

使用npm config get registry查看当前源:

在这里插入图片描述

往后再使用npm时就会自动从国内的淘宝镜像仓库下载了,速度就会很快

但我们这样通过修改npm的配置进行源的切换难免会有点麻烦,我们可以全局安装一个nrm来帮助我们快速的切换npm

使用nrm快速切换npm源

全局安装nrm

npm install -g nrm
登录后复制

执行nrm ls查看可切换的npm源

在这里插入图片描述

使用npm use 切换源,如切换到淘宝源:nrm use taobao

在这里插入图片描述

使用nrm test 源名测试相应源的响应时间:

在这里插入图片描述

可以看到淘宝源的响应速度要比npm的默认源快很多

中国npm镜像:cnpm

cnpm是一个完整的npmjs.org镜像,可以用它代替官方版本

下载cnpm

 npm install -g cnpm --registry=https://registry.npmmirror.com
登录后复制

cnpm就是淘宝镜像,上面我们使用淘宝镜像只是将npm的源更改为淘宝镜像(cnpm)的源(这个源其实就是指仓库的地址),之后还是通过npm指令进行使用

而这里是直接下载cnpm这个完整镜像,之后就可以使用cnpm指令而不是npm指令:

cnpm installcnpm i axios -g

// ....
登录后复制

二、yarn的使用

yarn是Facebook发布的一款依赖管理工具,它比npm更快、更高效

安装:

npm install -g yarn
登录后复制

更新yarn:

yarn set version latest
yarn set version from sources
登录后复制

优点

  • 速度超快
    yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快

  • 超级安全
    在执行代码之前,yarn 会通过算法校验每个安装包的完整性

yarn常用指令

  • yarn init:初始化项目,生成package.json文件,生成步骤与npm init大致相同

    在这里插入图片描述

  • yarn help:显示命令列表

  • yarn install:下载package.json中记录的所有资源,可简写为yarn

  • yarn add 包名下载指定的包到当前目录下

  • yarn remove 包名卸载当前目录下指定的包

  • yarn upgrade 包名更新当前目录下指定的包,包名后可加@指定版本号来指定需要更新到的版本

yarn指令后缀

  • --dev:指定开发环境下的依赖(devDependencies),简写为-D
  • --peer:指定核心依赖peerDependencies
  • --optional:指定可选依赖optionalDependencies

结语

本篇文章介绍了npmyarn,以及npm派生出的nrmcnpm

博主一直使用的是npm + nrm切换源的组合,因为这样不仅能保证速度快,能够方便的切换源,还不用下载像cnpmyarn这些额外的包

npmyarn的内容都比较多,本篇文章只是讲解了最常用的内容,如果想要了解更多可移步到对应的官网进行查看

最后

以上就是醉熏外套为你收集整理的了解两个强大的Node包管理器:npm 和 yarn的全部内容,希望文章能够帮你解决了解两个强大的Node包管理器:npm 和 yarn所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(88)

评论列表共有 0 条评论

立即
投稿
返回
顶部