npm、pnpm、yarn使用以及区别
npm
- 使用
- 安装包:在项目目录下,
npm install <包名>
用于本地安装包到node_modules
目录,并添加到package.json
的dependencies
中;npm install -g <包名>
用于全局安装,适用于命令行工具等。 - 初始化项目:
npm init
可创建package.json
文件,按提示输入相关信息;npm init -y
可快速生成默认配置的package.json
。 - 更新包:
npm update <包名>
更新包到最新版本(符合版本规则)。 - 卸载包:
npm uninstall <包名>
本地卸载;npm uninstall -g <包名>
全局卸载。 - 运行脚本:在
package.json
的scripts
字段定义脚本,如"start": "node app.js"
,通过npm run start
运行 。
- 安装包:在项目目录下,
- 特点
- 优点:是 Node.js 默认包管理器,用户基数大,生态系统丰富,包资源多;配置选项灵活,可高度自定义安装过程。
- 缺点:早期安装速度慢(现已有改善);不同环境依赖版本可能不一致,导致 “依赖地狱”;缓存管理不够智能,占用磁盘空间。
yarn
- 使用
- 安装包:
yarn add <包名>
安装到项目,添加到dependencies
;yarn add -D <包名>
安装到开发依赖(devDependencies
) 。 - 初始化项目:
yarn init
类似npm init
。 - 更新包:
yarn upgrade <包名>
。 - 卸载包:
yarn remove <包名>
。 - 运行脚本:定义在
package.json
的scripts
中,yarn <脚本名>
运行。 - 离线模式:可利用缓存依赖,无网络时也能安装。
- 安装包:
- 特点
- 优点:安装速度快,采用并行下载和高效依赖解析算法;保证安装结果一致性,解决依赖版本混乱问题;有安全检查功能;支持多包工作空间管理。
- 缺点:与 npm 虽兼容,但部分 npm 特定功能或插件可能无法完美运行。
pnpm
- 使用
- 安装包:
pnpm add <包名>
本地安装;pnpm add -g <包名>
全局安装。 - 初始化项目:
pnpm init
。 - 更新包:
pnpm up <包名>
;指定版本pnpm up <包名>@<版本号>
。 - 卸载包:
pnpm remove <包名>
本地卸载;pnpm remove --global <包名>
全局卸载。 - 管理 node 版本:
pnpm env list --remote
查看可用版本;pnpm env use --global <node版本号>
切换版本。
- 安装包:
- 特点
- 优点:通过硬链接和文件复用技术,减少磁盘占用,安装速度快;完全兼容 npm 和 yarn 的配置文件;默认严格模式,版本控制精确,避免依赖冲突;跨平台性能好。
- 缺点:社区相对较小,遇到问题时可获取资源可能较少;部分 IDE 或 CI/CD 工具支持不如 npm 和 yarn 成熟。
三者选择上,追求速度和磁盘空间效率选 pnpm;大型项目需一致性和安全检查选 yarn;看重生态丰富和灵活性选 npm。