目录
  • 定义与起源
  • Yarn与NPM的比较
  • Yarn的安装与配置
  • 安装步骤
  • 配置选项
  • Yarn的使用场景
  • 1. 项目初始化
  • 2. 依赖管理
  • 3. 脚本运行
  • 4. 命令总结
  • Yarn与其他包管理器的比较
  • 与npm的比较
  • 与pnpm的比较
  • 结论


定义与起源

Yarn是一个现代的包管理工具,旨在提供快速、可靠和安全的依赖管理。它由Facebook、Google、Exponent 和 Tilde 等公司共同开发,并于2016年10月首次发布。Yarn的设计初衷是为了解决npm在某些情况下的性能问题和依赖冲突问题。

Yarn的核心特性包括:

  • 快速性:Yarn利用了并行处理和缓存机制,使得依赖安装速度大幅提升。
  • 可靠性:通过锁定文件(yarn.lock),Yarn确保在不同环境下安装的依赖是一致的,避免了因版本差异导致的运行时错误。
  • 安全性:Yarn在安装包之前会校验包的完整性,确保了代码的安全性。

Yarn与NPM的比较

Yarn和NPM都是Node.js的包管理工具,但它们在设计理念和实现方式上存在一些差异:

  • 性能:Yarn通过并行处理和缓存机制,通常比NPM更快完成依赖的安装。
  • 依赖锁定:Yarn使用yarn.lock文件锁定依赖的确切版本,而NPM的package-lock.json是可选的,这使得Yarn在依赖管理上更加严格和一致。
  • 离线工作:Yarn允许在没有网络的情况下安装依赖,因为它会缓存之前下载过的包。
  • 网络效率:Yarn在网络请求上更加高效,它会尽可能地减少网络请求次数,并且能够恢复中断的下载。
  • 易用性:Yarn提供了更加友好的命令行界面和清晰的错误信息,使得用户更容易理解和使用。

尽管Yarn在某些方面优于NPM,但NPM作为Node.js的官方包管理工具,拥有更广泛的社区支持和插件生态。Yarn和NPM在很多项目中可以并存,开发者可以根据项目需求和个人喜好选择合适的工具。

Yarn的安装与配置

安装步骤
  1. 全局安装:通过npm全局安装Yarn。
npm install -g yarn
  • 1.
  1. 验证安装:运行以下命令来验证Yarn是否安装成功。
yarn --version
  • 1.
  1. 更新Yarn:使用以下命令更新Yarn到最新版本。
npm install -g yarn@latest
  • 1.
配置选项
  • 配置缓存目录
yarn config set cache-folder /path/to/cache
  • 1.
  • 配置代理
yarn config set https-proxy http://proxy:port
yarn config set http-proxy http://proxy:port
  • 1.
  • 2.
  • 使用Yarn Workspaces
{
  "workspaces": [
    "packages/*"
  ]
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 配置Yarn的PnP模式
nodeLinker: "pnp"
  • 1.
  • 配置Yarn的离线工作
yarn config set yarn-offline-mirror ./.yarn
  • 1.

Yarn的使用场景

1. 项目初始化

创建一个新的JavaScript项目时,Yarn可以快速初始化项目结构和依赖。

yarn init -y
  • 1.
2. 依赖管理

Yarn提供了addremoveupgrade等命令来管理项目依赖。

yarn add lodash
yarn remove react
yarn upgrade
  • 1.
  • 2.
  • 3.
3. 脚本运行

Yarn允许你在package.json中定义脚本,并通过yarn run命令执行。

"scripts": {
  "start": "node index.js"
}
  • 1.
  • 2.
  • 3.
yarn run start
  • 1.
4. 命令总结

特性/命令

描述

命令示例

初始化项目

创建一个新的项目并生成package.json文件。

yarn init

添加依赖

向项目中添加新依赖。

yarn add [package]

添加特定版本依赖

添加特定版本的依赖。

yarn add [package]@[version]

添加开发依赖

添加仅在开发时需要的依赖。

yarn add [package] --dev

移除依赖

从项目中移除依赖。

yarn remove [package]

升级依赖

升级项目中的依赖到最新版本。

yarn upgrade

安装依赖

安装package.json中列出的所有依赖。

yarn install

安装离线依赖

在没有网络的情况下安装依赖。

yarn install --offline

列出依赖

列出项目中的所有依赖及其版本。

yarn list

检查依赖的一致性

检查yarn.lock文件与当前安装的依赖是否一致。

yarn check

运行脚本

运行在package.json中定义的脚本。

yarn run [script-name]

打包项目

打包项目,准备发布。

yarn pack

发布包

将包发布到npm仓库。

yarn publish

缓存管理

查看、清理或自动管理Yarn的缓存。

yarn cache list / yarn cache clean [package]

Workspaces

管理多个包的项目结构,提高依赖管理效率。

yarn workspace [workspace-name] run [script]

Yarn与其他包管理器的比较

与npm的比较
  • 性能:Yarn通常在依赖安装速度上优于npm。
  • 依赖锁定:Yarn的yarn.lock提供了更严格的依赖锁定机制。
  • 离线支持:Yarn的离线工作能力是npm不具备的。
与pnpm的比较
  • 包存储:pnpm使用硬盘空间存储包的扁平结构,而Yarn使用node_modules结构。
  • 版本控制:pnpm在版本控制上更为严格,但Yarn的yarn.lock文件提供了跨平台的一致性。

结论

Yarn作为一个现代的JavaScript包管理器,以其快速性、可靠性和易用性赢得了开发者的青睐。它不仅提供了强大的依赖管理功能,还通过丰富的配置选项和命令行工具,使得项目管理更加高效和便捷。随着Yarn的不断发展和更新,它将继续为JavaScript开发社区提供强有力的支持。