npm、yarn 学习并对比

83 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

NPM

  1. npm(“Node 包管理器”)

npm是 JavaScript 运行时 Node.js 的默认程序包管理器。主要由两个部分组成:

  • 用于发布和下载程序包的 CLI(命令行界面)工具
  • 托管 JavaScript 程序包的  在线存储库 每个 JavaScript 项目(无论是 Node.js 还是浏览器应用程序)都可以被当作 npm 软件包,并且通过  package.json  来描述项目和软件包信息。当运行  npm init  初始化项目时,将生成  package.json文件,文件内的内容由开发人员提供:包含有name、description、license等信息。
{
      "name": "demo",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC"
}

npm更新比node.js更新频繁的多。npm安装指令是npm install, npm删除指令是npm uninstall。

      npm -v                               //检查npm版本
      npm install npm@latest -g            //更新npm至最新版本
  1. 使用淘宝 NPM 镜像

国内直接使用 npm 的官方镜像是非常慢的,可以使用淘宝 NPM 镜像。 淘宝 NPM 镜像是一个完整 npmjs.org 镜像,可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:

      //安装cnpm
      npm install -g cnpm --registry=https://registry.npmmirror.com
      //利用cnpm安装包
      cnpm install [name]

Yarn

Yarn 是 Facebook, Google, Exponent 和 Tilde 开发的一款新的 JavaScript 包管理工具。 Yarn 官网:classic.yarnpkg.com/zh-Hans
yarn有3个优点

  • 速度快:Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快。
  • 安全:在执行代码之前,Yarn 会通过算法校验每个安装包的完整性。
  • 可靠:使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作。 通过npm来安装yarn
        npm install --global yarn              //安装yarn
        yarn --version                         //检查版本
        yarn init                              //yarn新建项目
        yarn init --y                          //跳过会话,直接通过默认值生成 package.json

yarn和npm 一些对比

  1. 安装包管理器本身 npm 是安装node后默认安装的,而yarn要自行安装

  2. yarn和npm一些指令区别 ​yarn add/yarn remove | npm install/npm uninstall //安装卸载包
    npm update | yarn upgrade //更新依赖

  3. 速度和性能 npm 中,安装是按包顺序执行的,它会等待一个包完全安装,然后再继续下一个。
    yarn中,包并行执行任务,提高了性能。
    npm和yarn都有包缓存机制。

  4. 安全性 以前的npm 版本有几个严重的安全漏洞。从版本 6 开始,npm 会在安装过程中审核软件包并告诉您是否发现了任何漏洞。我们可以通过npm audit针对已安装的软件包运行来手动执行此检查。如果发现任何漏洞,npm 会给我们安全建议。可以运行​npm audit fix​来修复包漏洞,如果可能的话,依赖树将被修复。
    Yarn 和 npm 都使用加密哈希算法来确保包的完整性。

总结

  • 如果对当前的工作流程感到满意,不想安装额外的工具,并且没有大量磁盘空间,选择 npm。
  • 如果想要一些很棒的功能,或者需要一些 npm中缺少的功能,并且有足够的磁盘空间,选择 Yarn。