红宝书第三十一讲:通俗易懂的包管理器指南:npm 与 Yarn
资料取自《JavaScript高级程序设计(第5版)》。
查看总目录:红宝书学习大纲
一、基础概念
包管理器:帮你自动下载和管理第三方代码库(如React、Lodash)的工具 1。\
核心作用:
- 安装依赖:从公共仓库获取代码包
- 版本管理:明确指定项目依赖的版本
- 脚本自动化:快速执行构建/测试任务
二、npm(Node Package Manager)
1. 基础使用步骤
常用命令:
# 初始化项目(生成 package.json)
npm init -y
# 安装生产依赖(会记录在 dependencies)
npm install lodash
# 安装开发依赖(记录在 devDependencies)
npm install eslint --save-dev
2. 依赖管理特点
使用 嵌套树结构(每个子依赖独立装自己的版本)2\
举例:你的项目依赖A和B,而A依赖D\@1.0,B依赖D\@2.0\
→ 生成 node_modules
结构:
node_modules/
├── A/
│ └── node_modules/
│ └── D@1.0/
└── B/
└── node_modules/
└── D@2.0/
三、Yarn(由 Facebook 开发)
专注于 更快的安装速度和安全改进,适合大型项目 3。
1. 核心优化
- 离线缓存:重复安装直接读取本地缓存 3
- 锁定版本:生成
yarn.lock
文件严格锁定依赖版本 - 并行下载:比npm更快下载包
安装方式:
# 全局安装Yarn(需先安装Node.js)
npm install -g yarn
# 初始化项目(生成 package.json)
yarn init -y
# 安装包
yarn add axios
2. 依赖结构扁平化
相同示例(依赖A和B,A需要D\@1.0,B需要D\@2.0)\
→ 尝试共享依赖但可能冲突时分开:
node_modules/
├── A/
├── B/
├── D@1.0/ # 为A安装的版本
└── D@2.0/ # 为B安装的版本
四、如何选择?
维度 | npm | Yarn |
---|---|---|
安装速度 | 较慢 | 快(并行下载 + 缓存)3 |
版本锁定 | package-lock.json(自动) | yarn.lock(更严格)3 |
适用场景 | 小型项目/简单脚本 | 大型项目/团队协作 |
五、实战示例
场景:创建一个使用Lodash的项目
使用npm:
# 1. 初始化项目
npm init -y
# 2. 安装Lodash
npm install lodash
# 3. 在代码中使用
// index.js
const _ = require('lodash');
console.log(_.sum([1, 2, 3])); // 输出:6
使用Yarn:
# 1. 初始化项目(需全局安装Yarn)
yarn init -y
# 2. 安装Lodash
yarn add lodash
# 3. 运行脚本
node index.js
目录:总目录
上篇文章:红宝书第三十讲:通俗易懂的JavaScript调试指南
下篇文章:红宝书第三十二讲:零基础学会模块打包器:Webpack、Parcel、Rollup
脚注
- 《JavaScript高级程序设计(第5版)》说明npm是Node.js的默认包管理器 ↩
- 《JavaScript高级程序设计(第5版)》描述npm使用嵌套依赖树安装包 ↩
- 《JavaScript高级程序设计(第5版)》指出Yarn具备缓存和严格的版本锁定 ↩
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。