📦 npm、yarn、pnpm、bun 是什么

2025-09-01
18847 分钟
...

🎯 什么是包管理器?

在 JavaScript 和 Node.js 生态中,一个项目往往依赖很多第三方库,比如 Vue、React、Lodash 等。**包管理器(Package Manager)**的作用,就是:

  • 安装/卸载这些依赖库;

  • 管理依赖的版本;

  • 构建依赖树;

  • 提供运行脚本(如 npm run dev)等功能。

最早是 npm,后来有了性能更好的 yarn,又有了极致节省空间的 pnpm,最近还杀出了一个全能选手 —— bun。


📌 1. npm:最原始、最广泛的包管理器

  • 全称:Node Package Manager

  • 开发者:Node.js 官方团队

  • 地位:最基础、最广泛使用的工具(Node.js 安装时自带)

  • 命令前缀:npm

✅ 特点

  • 社区最广泛支持;

  • 包管理逻辑清晰,学习资料丰富;

  • 缺点是早期安装速度较慢、存在重复安装、依赖树冗余等问题;

  • 从 npm v7 开始改进了很多(比如支持 workspaces)。

🚀 常用命令示例

npm install          
npm install vue      
npm uninstall vue    
npm run serve        

📌 2. yarn:Facebook 出品,解决 npm 的痛点

  • 开发者:Facebook

  • 诞生原因:为了解决 npm 安装速度慢、锁文件混乱、网络不稳定等问题

  • 命令前缀:yarn

✅ 特点

  • 更快的安装速度(缓存机制);

  • 使用 yarn.lock 文件,锁定版本更清晰;

  • 原生支持 monorepo(多包项目);

  • 更优雅的输出格式,更友好的用户体验;

  • v2 开始重构为 Plug’n’Play 模式(默认禁用 node_modules)。

🚀 常用命令示例

yarn                # 安装所有依赖
yarn add axios      # 添加依赖
yarn remove axios   # 删除依赖
yarn dev            # 运行脚本

📌 3. pnpm:磁盘空间终结者,速度与规范兼得

  • 全称:Performant npm

  • 开发者:Zoltan Kochan 等开源作者

  • 命令前缀:pnpm

✅ 特点

  • 使用符号链接和内容寻址(类似 git)机制,实现依赖复用;

  • 同一包只在硬盘上存一份,极大节省 node_modules 空间;

  • 安装速度极快;

  • 结构更规范、更严格,不容易出现“依赖地狱”;

  • 完全兼容 npm 的语法。

🚀 常用命令示例

pnpm install           # 安装依赖
pnpm add vue           # 安装 vue
pnpm remove vue        # 删除 vue
pnpm run dev           # 运行脚本

🎁 小彩蛋:pnpm 能用来一键初始化 Vite 项目

pnpm create vite

📌 4. bun:下一个全能型选手(包管理 + JS 运行时 + 构建工具)

  • 开发者:Jarred Sumner

  • 诞生时间:2022 年

  • 核心目标替代 Node + npm/yarn + webpack 等工具链

  • 命令前缀:bun

✅ 特点

  • 内置 包管理器、JS 执行器、构建器 三合一;

  • 使用 Zig 编写,性能极高;

  • 安装依赖比 npm 快十几倍;

  • 启动脚本更快、内存占用更少;

  • 仍在快速更新,生态在逐步扩展中。

🚀 常用命令示例

bun install          # 安装依赖
bun add vue          # 安装 vue
bun remove vue       # 删除 vue
bun run dev          # 运行脚本
bun index.ts         # 直接执行 TypeScript 文件

⚠️ 注意:bun 虽然很强,但目前生态还不如 npm/yarn/pnpm 完善,适合技术探索者或追求极致性能的场景。


📊 对比总结表格(最重要)

功能 / 特性npmyarnpnpmbun
出现时间最早后于 npm后于 yarn最晚
安装速度一般(新版改善)较快(有缓存)极快(复用依赖)最快(Zig 编写)
节省磁盘空间✅ 是✅ 是
锁文件package-lock.jsonyarn.lockpnpm-lock.yamlbun.lockb
原生 monorepo 支持有(v7+)✅ 是✅ 是正在完善
生态稳定性✅ 最成熟✅ 成熟✅ 稳定🚧 新但潜力大
是否默认带 node_modules✅ 是✅ 是✅ 是(使用硬链接)❌(使用虚拟 FS)
推荐人群初学者 / 通用跨团队协作追求性能与规范高性能探索者

✅ 开发建议(如何选择?)

你是谁推荐选择
刚接触前端的新手✅ npm(默认自带,文档最多)
想要更快构建、更稳定依赖✅ yarn 或 pnpm
大型项目、多包管理(monorepo)✅ pnpm
技术极客、极限性能控✅ bun

✍️ 写在最后

JavaScript 生态非常活跃,每一个包管理器都有其适合的使用场景。现在你已经了解了它们之间的区别,可以根据自己的需求合理选择工具,为开发提速、为项目减负。

如果您觉得这篇文章有帮助,请点个赞吧~

分享文章

相关文章

更多文章 →
pnpm2026-03-17
Bun 为什么比 pnpm(以及 npm、Yarn)快
Bun 之所以比 pnpm(以及 npm、Yarn)快,核心原因在于其 底层架构的彻底重构 。pnpm 虽然通过硬链接和内容寻址解决了磁盘空间和部分安装效率问题,但它本质上仍是一个运行在 Node.js 之上的 JavaScript 工具;而 Bun 是从底层用 Zig 语言 编写的原生二进制程序,并深度集成了 JavaScriptCore 引擎。 以下是 Bun 比 pnpm 快的具体技术原因: 1\. 编程语言与执行环境的差异(最根...
学习
pnpm2024-09-29
【npm私有化部署】手把手教你使用Verdaccio搭建私有化npm
一、Verdaccio是什么? 是一个 Node.js创建的轻量的私有npm代理注册源(proxy registry) 通过Verdaccio搭建私有npm服务器有着以下优势: 1. 零配置:无需安装数据库,基于 ,安装及运行。 2. 使用方便:将内部高复用的代码进行提取,方便在多个项目中引用。 3. 安全性:仓库搭建在局域网内部,只针对内部人员使用。 4. 权限管理:对发布和下载npm包配置权限管理。 5. 加速包下载:将下载过的依赖...
学习
pnpm2024-09-11
NPM私库搭建-verdaccio(Linux)
linux服务器安装node a)、官网下载所需的node版本 b)、解压安装包 若下载的是xxx.tar.xz文件,解压命令为 c)、修改环境变量 修改:/etc/profile文件 d)、环境变量需重启生效 e)、查看当前node版本 防止报grywarn权限的错 是因为原来的私库崩了 这里直接指明仓库地址为淘宝镜像 文件位置: 如果找不到该文件,需要先运行verdaccio,直接执行verdaccio命令即可。 继续修改配置文件:...
学习
pnpm2024-09-02
【npm进阶】探索npx:一次性执行包的新方式
在现代前端开发中,开发者们需要管理和使用各种各样的npm包。而在此过程中, 作为npm生态系统中的一部分,提供了一种方便的方式来执行本地或远程的npm包。本篇文章将详细介绍 的用途和优势,展示如何使用 来执行本地和远程包,并提供一些实际的npx示例。 引言 在过去,开发者通常会通过全局安装某些工具来使用它们。然而,全局安装不仅会污染全局环境,还可能导致不同项目之间的版本冲突。 是npm 5.2.0引入的一种新工具,旨在解决这些问题。通过...
学习
pnpm2024-07-10
外网向内网导包的坎坷之旅
最近工作遇到个问题,一开始项目是在外网运行的,后来需要导入内网运行,我一开始是把node modules整个目录拷贝过去了,结果运行不起来,可能因为项目是pnpm的,直接从mac拷贝到windows似乎是运行不起来。然后尝试自己下载,缺了好多包,也启动不了运行不起来,最后只好开始了我的导包之旅。 这是一个悲伤的故事,前前后后和对应的人员来回导包4、5次,历时几周才搞完,因为项目不着急,所以就没有急着去搞,真是尴尬。下面就是我的导包之旅:...
学习
pnpm2024-06-04
从零到一使用 turborepo + pnpm 搭建企业级 Monorepo 项目
单纯使用 pnpm 就能实现 Monorepo 项目我们都知道,因为它原生支持 workspace,但是它也依然存在一些缺点,例如: 1. 任务运行策略:虽然 pnpm 支持工作空间间的依赖管理和一些任务的并行执行,但是它并不那么灵活或高效地处理跨包的构建、测试和发布任务比如增量构建和任务缓存,可以显著提高大型 Monorepo 的开发和持续集成的效率。 2. 自定义构建和发布流程:pnpm 在自定义构建流程、测试流程和发布流程方面的能...
学习

评论

请登录后发表评论

去登录
加载评论中...

目录