包管理器(npm 、yarn 、pnpm)
NPM
node 中的包管理器叫做 npm(node package manage),npm 是世界上最大的包管理库。作为开发人员,我们可以将自己开发的包上传到 npm 中供别人使用,也可以直接从 npm 中下载别人开发好的包,在自家项目中使用。
npm 由以下三个部分组成:
- npm 网站(通过 npm 网站可以查找包,也可以管理自己开发并提交到 npm 中的包)
- npm CLI(Command Line Interface 即命令行)(通过 npm 的命令行,可以在计算机中操作 npm 中的各种包(下载和上传等))
- 仓库(仓库用来存储包以及包相关的各种信息)
对于初学者来讲,大多数情况下都是下载并使用 npm 中的各种包,而少有向 npm 中上传的操作。所以本节课的重点我们也会放到通过 npm 下载引用包的各种操作上,而不是上传管理等操作。
npm 在安装 node 时已经一起安装了,所以只有你的 node 正常安装了,npm 自然就可以直接使用了。可以在命令行中输入 npm -v 来查看 npm 是否安装成功。

安装包
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 组件:

上例中安装的是一个命令行工具,安装成功后只需要在命令行中输入 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

浙公网安备 33010602011771号