npm、yarn、cnpm、pnpm、nvm、nrm的安装与使用

678 阅读9分钟

1、npm

1.1 npm简介

###### 概念: Node package manger — node管理工具

npm由三个独立的部分组成:

网站网站是开发者查找包(package)、设置参数以及管理npm使用体验的主要途径

注册表(registry)注册表是一个巨大的数据库,保存了每个包(package)的信息

命令行工具(CLI)CLI通过命令行或终端运行。开发者通过CLI与npm打交道

1.2 npm安装

官网:nodejs.org/zh-cn (下载的是长期支持版本),安装了node之后,npm也就安装了。

(1)测试是否安装好: image.png

(2)更改镜像

因为npm的地址是美国的,下载速度异常慢,把它的地址改为淘宝的,就可以解决(第一次安装的时候需要);

1)查看npm的镜像源 npm config get registry 
(2)把镜像源更改为淘宝镜像:npm config set registry=https://registry.npmmirror.com/ 3)安装成功后再查看npm 的镜像源
  
 原始npm 镜像 与 切换的淘宝镜像
    npm config set registry https://registry.npmjs.org/ 
    npm config set registry https://registry.npmmirror.com/

1.3 基于npm进行模块管理

有两种方式用来安装npm包:本地安装和全局安装

npm install XXX 把模块安装在当前项目当(最后生成这样的一个文件夹 — node_modules)

npm install 'package'

(1)相关配置:

  • -g —为全局安装
  • –save-dev( -D )—开发阶段的依赖
  • –save( -S ) —生产阶段的依赖

(2)常见命令

  1. npm init -y 初始化当前项目的配置依赖清单。

    生成一个package.json文件,里面有着你安装的第三方模块,还有着你的npm项目信息,最大的用处就是上传到git托管服务器,忽略掉node_modules包!

  2. npm install 把环境,按照清单按照所需的模块

  3. npm root -g 查看全局安装模块的目录

  4. npm uninstall xxx 卸载!

  5. npm run build(serve) —执行命令!

npm 使用一个名为package.json的文件,用户可以通过npm install --save命令把项目里所有的依赖项保存在这个文件里

参考中文文档:www.npmjs.com.cn/

2、yarn(针对的是Yarn 2 版本)

2.1 yarn简介

Yarn 是一个软件包管理器,还可以作为项目管理工具。无论是小型项目还是大型单体仓库(monorepos),无论是业余爱好者,还是企业用户,Yarn都能满足需求。

代码通过 软件包(package) 的方式被共享,一个软件包里包含了所有需要共享的代码,以及一个描述软件包信息的文件 package.json(叫做 清单)

2.2 yarn安装

全局安装

Yarn 2 及更高版本应按项目管理。别担心,改变很小!只需确保首先在全局安装 Yarn 二进制文件即可,我们将使用该二进制文件来生成本地的二进制文件:

npm install -g yarn

按项目安装

  1. 全局安装Yarn 的最新版本:npm install -g yarn
  2. 进入你的项目目录:cd ~/path/to/project
  3. 运行以下命令:yarn set version berry

“Berry” 是 Yarn 2 发布序列的代号,同时也是我们的 代码仓库 的名称!

如果以后要将 Yarn 更新到最新版本,请运行:

yarn set version latest

Yarn 将从我们的网站下载最新的二进制文件,并将其安装在您的项目中。然后,不要忘记更新依赖项并提交更新结果!

用法

初始化一个新项目
    yarn init
安装所有依赖项
    yarn install
添加依赖项
    yarn add [package]
    yarn add [package]@[version]
    yarn add [package]@[tag]
将依赖项添加到不同的依赖类别中
    yarn add [package] --dev #dev dependencies
    yarn add[package] --peer #peer dependencies
更新依赖项
    yarn up [package]
    yarn up [package]@[version]
    yarn up [package]@[tag]
删除依赖项
    yarn remove [package]
更新Yarn 本体
    yarn set version latest
    yarn set version from sources

参考中文文档:www.yarnpkg.cn/

3、cnpm

3.1 cnpm 简介

cnpm 是阿里巴巴推出的包管理工具,安装之后默认会使用registry.npmmirror.com 这个镜像源。 它的安装命令和 npm 基本一致,通过 cnpm i 或者 cnpm install 命令来安装插件,当然在使用 cnpm 前必须先通过npm安装

3.2 安装

npm install -g cnpm

国内安装:

$ npm install cnpm -g --registry=registry.npm.taobao.org

 构建私有 npm
 $ npm install cnpm -g
    
 # then alias it
`$ alias mynpm='cnpm --registry=http://registry.npm.example.com \
  --registryweb=http://npm.example.com \
  --userconfig=$HOME/.mynpmrc'`

查看安装版本:

cnpm -v

3.3 注意

cnpm 不生成 lock 文件,也不会识别项目中的lock文件,如果是多人开发,还是建议使用npm或者其他包管理工具安装插件

4、pnpm

4.1 特点

  1. 快速:pnpm是同类工具速度的2倍
  2. 高效:node_modules中的所有文件均链接自单一存储位置
  3. 支持单体仓库:pnpm 内置了对单个源码仓库中包含多个软件包的支持
  4. 权限严格:pnpm 创建的 node_modules 默认并非扁平结构,因此代码无法对任意软件包进行访问

4.2 安装

使用npm

npm install -g pnpm

 // 使用Homebrew 安装pnpm
 brew install pnpm
 // 使用Scoop 安装pnpm:
 scoop install nodejs-lts pnpm

兼容性

以下列表列出了以往的 pnpm 版本和对应支持的 Node.js 版本

image.png

4.3 用法

与npm 的差异

  1. 与 npm 不同,pnpm 会验证所有参数。例如,pnpm install --target_arch x64 将运行 失败,由于 --target_arch 不是一个有效的 pnpm install 参数。

  2. 但是,某些依赖项可能会使用以npm_config_开头的环境变量,该环境变量 是可以通过 CLI 参数添加的。在这种情况下,假定有如下参数:

    • 直接设置环境变量:npm_config_target_arch=x64 pnpm install
    • 利用 --config. 前缀强制设置参数:pnpm install --config.target_arch=x64

参考官网 www.pnpm.cn/

5、总结

5.1 npm特点

(1)npm install的时候巨慢。特别是新的项目拉下来要等半天,删除node_modules,重新install的时候依旧如此。

(2)同一个项目,安装的时候无法保持一致性。由于package.json文件中版本号的特点,下面三个版本号在安装的时候代表不同的含义。

“5.0.3”表示安装指定的5.0.3版本,“~5.0.3”表示安装5.0.X中最新的版本,“^5.0.3”表示安装5.X.X中最新的版本。这就麻烦了,常常会出现同一个项目,有的同事是OK的,有的同事会由于安装的版本不一致出现bug。

(3)安装的时候,包会在同一时间下载和安装,中途某个时候,一个包抛出了一个错误,但是npm会继续下载和安装包。因为npm会把所有的日志输出到终端,有关错误包的错误信息就会在一大堆npm打印的警告中丢失掉,并且你甚至永远不会注意到实际发生的错误。

5.2 yarn特点

“Yarn是由Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 ,是为了弥补 npm 的一些缺陷而出现。

  1. yarn在下载和安装依赖包采用的是多线程的方式,而npm是单线程的方式执行,速度上就拉开了差距
  2. yarn会在用户本地缓存已下载过的依赖包,优先会从缓存中读取依赖包,只有本地缓存不存在的情况才会采取远端请求的方式;反观npm则是全量请求,速度上再次拉开差距
  3. yarn把所有的依赖躺平至同级,有效的减少了相同依赖包重复下载的情况,加快了下载速度而且也减少了node_modules的体积;反观npm则是严格的根据依赖树下载并放置到对应位置,导致相同的包多次下载、node_modules体积大的问题

image.png

5.3 cnpm特点

(1) cnpm跟npm用法完全一致,只是在执行命令时将npm改为cnpm。

(2) npm安装插件是从国外服务器下载,受网络影响大,可能出现异常,如果npm的服务器在中国就好了,于是淘宝团队干了这事。来自官网:“这是一个完整 npmjs.org镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。

(3)cnpm将所有项目下载的包收拢在自己的缓存文件夹中,通过软链接把依赖包放到对应项目的node_modules中

5.4 pnpm特点

(1) pnpm运行起来非常的快,超过了npm和yarn

(2) pnpm采用了一种巧妙的方法,利用硬链接和符号链接来避免复制所有本地缓存源文件,这是yarn的最大的性能弱点之一

(3) 使用链接并不容易,会带来一堆问题需要考虑。

(4) pnpm继承了yarn的所有优点,包括离线模式和确定性安装

(5) 一旦安装完 pnpm 之后,就无需使用其它软件包管理器来更新 pnpm 了。 你可以让 pnpm 自己来更新自己,如下所示:pnpm add -g pnpm

以下 是一个与 npm 等价命令的对照表,帮助你快速入门:

image.png

当你使用一个未知命令时,pnpm 将会查找和该命令具有相同名称的脚本, 因此,pnpm run lint 和 pnpm lint 是一样的。如果没有相同名称的脚本的话, 那么 pnpm 将按照 shell 脚本的形式执行该命令,所以你可以执行类似 pnpm eslint (see pnpm exec) 指令的命令。

5.5 nvm与nrm

一句话概括:

  • 1.nvm是管理多个node版本的
  • 2.nrm是管理npm源的,为了下载包更快

通过官网下载最新版的 node 之后,nvm 也默认安装了。

nvm

管理node版本的工具,例如在一台电脑上已经安装了node10以上,但有的项目需要node版本在8,由于要维护多个项目,卸载再安装又有很多麻烦和错误,使用nvm给前端同学带来了福利。

nvm install 8.10.0   //安装ndoe  8.10.0为node版本
nvm list             //查看nvm管理的node版本列表,正在使用的版本在列表前有星号标记
nvm use 8.10.0       //使用node指定版本 
nvm uninstall 8.10.0 //卸载指定node版本

nrm

使用nrm来切换npm源

npm install -g nrm   // 全局安装nrm
nrm ls               // 列出可用的源
nrm use taobao       // 通过 nrm use指令来切换不同的源
nrm add 别名 源地址   // 添加源

转自:

blog.csdn.net/qq_59012240… blog.csdn.net/weixin_5379… www.jianshu.com/p/24193e9ad…