包管理器(npm 、yarn 、pnpm)

NPM

node 中的包管理器叫做 npm(node package manage),npm 是世界上最大的包管理库。作为开发人员,我们可以将自己开发的包上传到 npm 中供别人使用,也可以直接从 npm 中下载别人开发好的包,在自家项目中使用。

npm 由以下三个部分组成:

  1. npm 网站(通过 npm 网站可以查找包,也可以管理自己开发并提交到 npm 中的包)
  2. npm CLI(Command Line Interface 即命令行)(通过 npm 的命令行,可以在计算机中操作 npm 中的各种包(下载和上传等))
  3. 仓库(仓库用来存储包以及包相关的各种信息)

对于初学者来讲,大多数情况下都是下载并使用 npm 中的各种包,而少有向 npm 中上传的操作。所以本节课的重点我们也会放到通过 npm 下载引用包的各种操作上,而不是上传管理等操作。

npm 在安装 node 时已经一起安装了,所以只有你的 node 正常安装了,npm 自然就可以直接使用了。可以在命令行中输入 npm -v 来查看 npm 是否安装成功。
image

安装包

npm 最常用的功能就是包的安装,包安装就是将 npm 仓库中的包下载到本地中使用。安装的命令为 npm install <包名>,比如,我们想在项目中安装 lodash 这个包,可以在项目目录下执行以下的命令:

npm install lodash

调用后,npm 会自动联网下载包,根据网络状况不同需要等待的时间也会有所不同。安装完毕后简单看一下打印的信息,added 1 package 表示安装了一个包,audited 2 packages 表示检查了两个包的安全漏洞,found 0 vulnerabilities 表示发现了 0 个漏洞,简单说,安装成功了,这个包已经可以正常使用了。可以编写一个 js 文件测试一下:

const _ = require("lodash")

let obj = {name:"孙悟空"}
let obj2 = {name:"孙悟空"}

let result = _.isEqual(obj, obj2)

console.log(result)

接下来,我们来看看 npm install lodash 这个命令到底做了什么:

首先我们看到的,调用后它会自动连接 npm 服务器,将最新的 loadsh 包下载到项目的 node_modules 目录下,如果目录不存在下载包时会自动创建。

第二,它会修改 package.json 文件,在 dependencies 字段中将刚刚下载的包设置为依赖项

"dependencies": {
    "lodash": "^4.17.21"
 }

package.json 中的 dependencies 表示当前包的依赖包,也就意味着我们的包必须有这些包才能够正常的运行。设置依赖项后,当我们在项目中执行 npm install 后,依赖项中的包会自动下载到当前项目中。设置依赖项时 "lodash": "^4.17.21" 前边的 loadsh 表示包的名字,后边是包的版本。"^4.17.21" 表示匹配最新的 4.x.x 的版本,也就是如果后期 lodash 包更新到了 4.18.1 ,我们的包也会一起更新,但是如果更新到了 5.0.0 ,我们的包是不会随之更新的。如果是 "~4.17.21" ,~ 表示匹配最小依赖,也就是 4.17.x 。如果是 "*" 则表示匹配最新版本,即 x.x.x(不建议使用)。当然也可以不加任何前缀,这样只会匹配到当前版本。

也可以在安装时直接指定,要安装的包的版本,像是这样:

npm install lodash@3.2.0
npm install lodash@"> 3.2.0"

如果不希望,包出现在 package.json 的依赖中,可以添加 –no-save 指令禁止:

npm install lodash --no-save

或者,也可以通过 -D 或 –save-dev ,将其添加到开发依赖

npm install lodash -D

第三,安装包后项目中会自动生成 package.lock.json 文件,这个文件主要是用来记录当前项目下包的结构和版本的,提升重新下载包的速度,以及确保包的版本正确。

全局安装

全局安装指,直接将包安装到计算机本地,通常全局安装的都是一些命令行工具,全局安装后工具使用起来也会更加便利。全局安装只需要在执行 install 指令时添加 -g 指令即可。比如,现在我们尝试全局安装 laughs 组件:
image
上例中安装的是一个命令行工具,安装成功后只需要在命令行中输入 ha 即可在命令行中显示一个英文的笑话,当然这是一个纯粹为了演示而安装的组件。

所有的组件可以通过 npm uninstall xxx 来完成卸载。

配置镜像

npm 的服务器位于国外,有时访问速度会比较慢,可以通过配置国内镜像来解决该问题,配置代码:

npm install -g cnpm --registry=https://registry.npmmirror.com

上边的指令会为计算机安装一个名为 cnpm 的新指令,该指令的功能和 npm 相同,不同点在于它会通过国内的镜像服务器下载包。

安装完成后,便可以通过 cnpm 命令来安装包。

使用 cnpm 后,计算机中便同时存储在 cnpm 和 npm 两个命令,可以根据需要选择使用。但是由于 cnpm 的运行方式和 npm 不太一样,所以就我个人来讲,更愿意直接修改 npm 的地址为镜像地址。显示这样,即可直接修改 npm 的仓库地址:

npm set registry https://registry.npmmirror.com

查看 registry :

npm get registry

修改后,直接使用 npm 时访问的就是国内的 npm 镜像服务器,如果想恢复到原版的配置,可以执行以下命令:

npm config delete registry

yarn(Yet Another Resource Navigator)

早期的 npm 存在有诸多问题,不是非常的好用。yarn 的出现就是为了帮助我们解决 npm 中的各种问题,如何解决呢?方案很简单,使用 yarn 替换掉 npm 。当然现在的 npm 相较于之前的已经得到了很大的优化,所以你完全可以选择不使用 yarn 。

在新版本的 node 中,corepack 中已经包含了 yarn ,可以通过启用 corepack 的方式使 yarn 启用。首先执行以下命令启用 corepack :

corepack enable

查看 yarn 版本

yarn -v

切换 yarn 版本为最新版:

corepack prepare yarn@stable --activate

切换为 1.x.x 的版本:

corepack prepare yarn@1 --activate

命令

yarn init(初始化,创建 package.json)

yarn add xxx(添加依赖)

yarn add xxx -D(添加开发依赖)

yarn remove xxx(移除包)

yarn(自动安装依赖)

yarn run(执行自定义脚本)

yarn <指令>(执行自定义脚本)

yarn global add(全局安装)

yarn global remove(全局移除)

yarn global bin(全局安装目录)

yarn 镜像配置

配置:

yarn config set registry https://registry.npmmirror.com

恢复:

yarn config delete registry

pnpm

pnpm 又是一款 node 中的包管理器,我真的不想在介绍了。但是想想还是说一下吧,毕竟也不难。作为初学者的你,npm 、yarn 和 pnpm 选一个学一学就可以了。

安装

npm install -g pnpm

命令

pnpm init(初始化项目,添加 package.json )

pnpm add xxx(添加依赖)

pnpm add -D xxx(添加开发依赖)

pnpm add -g xxx(添加全局包)

pnpm install(安装依赖)

pnpm remove xxx(移除包)

pnpm 镜像配置

配置:

pnpm config set registry https://registry.npmmirror.com

恢复:

pnpm config delete registry
posted @ 2023-03-12 14:00  HopeLive  阅读(256)  评论(0)    收藏  举报