在 Node.js 项目开发中,包管理工具是不可或缺的基础设施。无论你是在搭建后端服务器、构建前端工程,还是创建命令行工具,都需要依赖成千上万的第三方包。因此,理解 npm 与 yarn 的使用方法,对于提升开发效率、保证项目可维护性至关重要。
本篇文章将带你快速掌握 npm 与 yarn 的核心概念、基本命令以及日常开发中最常用的技巧。
一、什么是包管理工具?
当你开始一个 Node.js 项目时,会使用各种第三方库,例如:
- Express(搭建 Web 服务)
- axios(请求 HTTP 接口)
- lodash(工具方法库)
- moment / dayjs(时间处理)
这些依赖包由 npm 或 yarn 来完成:
- 下载与管理依赖
- 管理版本号
- 配置项目脚本
- 发布自定义模块
简而言之,包管理工具就是项目依赖的"仓库管理员"。
二、npm:Node.js 自带的包管理器
npm 全称 Node Package Manager,是 Node.js 安装包中自带的工具,生态最为庞大。
npm 常用命令
1. 查看版本
bash
npm -v
2. 初始化项目
生成 package.json:
bash
npm init -y
3. 安装依赖
安装到 dependencies:
bash
npm install express
安装到 devDependencies:
bash
npm install nodemon --save-dev
4. 全局安装
bash
npm install -g typescript
5. 删除依赖
bash
npm uninstall express
6. 清理缓存
bash
npm cache clean --force
npm 使用简单直接,适合入门且更加官方。
三、为什么出现 yarn?
npm 在早期存在以下问题:
- 安装速度慢
- 锁文件不稳定
- 安装结果不可复现
为了解决这些痛点,Facebook 推出了 yarn,它提供了更快、更稳定的安装体验。
如今 npm 经过多次升级性能已经提升许多,但 yarn 仍拥有大量用户。
四、yarn 的常用命令
查看版本:
bash
yarn -v
初始化项目:
bash
yarn init -y
安装依赖:
bash
yarn add express
安装开发依赖:
bash
yarn add nodemon -D
删除依赖:
bash
yarn remove express
全局安装:
bash
yarn global add typescript
查看已安装包:
bash
yarn list
相比 npm,yarn 的输出信息更简洁,速度也更快。
五、npm 与 yarn 命令对照表
| 功能 | npm | yarn |
|---|---|---|
| 初始化项目 | npm init -y | yarn init -y |
| 安装项目依赖 | npm install | yarn |
| 安装包 | npm install xxx | yarn add xxx |
| 安装开发依赖 | npm install xxx -D | yarn add xxx -D |
| 删除包 | npm uninstall xxx | yarn remove xxx |
| 全局安装 | npm install -g xxx | yarn global add xxx |
| 运行脚本 | npm run start | yarn start |
你可以看到 yarn 的命令更简短。
六、package.json:npm 与 yarn 的核心文件
无论你使用 npm 还是 yarn,package.json 都扮演着中心角色。它记录:
- 项目名称与版本
- 依赖列表
- 开发依赖
- 执行脚本
- 是否为 ES Module
示例:
json
{
"name": "node-demo",
"version": "1.0.0",
"scripts": {
"start": "node index.js"
}
}
日常开发中,你经常会向 scripts 中添加测试、构建、开发命令。
七、package-lock.json 与 yarn.lock 的作用
为了确保项目在任何时间、任何机器上安装的依赖版本一致,包管理器会生成锁文件。
- npm 使用 package-lock.json
- yarn 使用 yarn.lock
锁文件可以避免"今天能运行,明天依赖版本变了就崩了"的情况。
锁文件是必须提交到代码仓库的。
八、npm 与 yarn 应该怎么选?
适合使用 npm 的情况
- 纯 Node.js 后端项目
- 希望保持官方工具链
- 需要较少的额外配置
- 团队不追求极致性能
npm 初学容易,安装即可使用。
适合使用 yarn 的情况
- 前端工程规模较大
- 依赖数量多且安装频繁
- 任何需要快速安装速度的项目
- 多人协作需要更稳定的锁文件
yarn 的并行下载能力更优秀,适合大型前端项目。
九、混合使用会有什么问题?
在一个项目中,如果同时使用 npm 和 yarn,会导致:
- 依赖解析混乱
- 锁文件重复
- node_modules 内容不一致
建议:
一个项目只用一个包管理器
要么统一用 npm,要么统一用 yarn,避免混乱。
十、总结
npm 与 yarn 是 Node.js 项目构建的基础工具,它们的作用都是帮助开发者高效管理依赖。npm 更官方、更易上手,而 yarn 更快速、更适合大型工程。
日常开发中,只要掌握:
- 如何安装依赖
- 如何添加脚本
- 如何管理锁文件
- 如何全局与本地安装工具
就可以轻松胜任大多数 Node.js 项目的依赖管理工作。