Yarn是由Facebook、Google、Exponent和Tilde共同开发的一个新的JavaScript包管理器,旨在解决客户端JavaScript项目中的一些关键问题,如性能、安全性和可靠性。Yarn在发布后迅速获得了开发社区的广泛认可,成为许多现代JavaScript项目的首选包管理工具。

与NPM相比,Yarn提供了更快的依赖安装速度、更严格的版本控制和更高效的依赖管理。Yarn的出现不仅提高了项目的构建效率,还通过其独特的锁定文件机制,确保了项目依赖的一致性。

一、安装Yarn

在安装Yarn之前,需要确保您的系统中已安装Node.js和npm。Yarn可以在Windows、MacOS和Linux上运行,具体安装步骤如下:

安装 npm 后,你可以运行以下命令来安装和升级 Yarn:

npm install -g yarn

装完成后,通过运行yarn --version来验证安装。

yarn --version

二、Yarn的基本使用

使用Yarn管理项目的依赖是非常直观的。以下是一些基本命令:

1. 初始化新项目

当你开始一个新的JavaScript项目时,你可以使用Yarn来初始化项目。这将创建一个package.json文件,用于跟踪项目的依赖和配置。

  • yarn init
    

    执行此命令后,Yarn会询问一些基本信息(如项目名称、版本等),然后生成package.json文件。

2. 添加依赖

如果你需要在项目中添加一个库或框架(比如React),你可以使用以下命令:

yarn add react

这个命令会将React添加到你的项目依赖中,并更新package.jsonyarn.lock文件。

3. 添加开发依赖

对于只在开发过程中使用的库(如测试框架Jest),你可以将它们作为开发依赖添加:

yarn add jest --dev

这会将Jest添加到package.jsondevDependencies部分。

4. 更新依赖

如果你想更新项目中的某个依赖到最新版本,可以使用:

 yarn upgrade [package-name]

例如:更新React库:

yarn upgrade react

5. 移除依赖

如果你决定不再使用某个库,可以从项目中移除它:

yarn remove [package-name]

6. 安装所有依赖

如果你克隆了一个项目或者与他人协作,你需要安装所有必要的依赖。只需在项目根目录运行:

yarn install

这个命令会根据package.jsonyarn.lock文件安装所有必要的依赖。

7. 查看已安装的依赖

要查看项目中已安装的依赖及其版本,可以使用:

yarn list

8. 运行脚本

如果package.json中定义了脚本(如启动开发服务器、运行测试等),可以使用Yarn来执行这些脚本:

yarn run [script-name]

 例如,运行名为start的脚本:

yarn run start

三、Yarn的高级功能

Yarn不仅仅是一个包管理器,它还提供了许多高级功能,如:

1. 工作区(Workspaces)

Yarn Workspaces 是一种管理多包项目的方法,特别适用于大型项目和微服务架构。它允许你在单个仓库中维护多个相关的包,这些包可以共享依赖,从而节省空间和安装时间。

  • 共享依赖: 在工作区中,所有包的依赖都安装在根目录的 node_modules 中,避免了重复安装相同依赖。
  • 依赖链接: 工作区内的包可以相互依赖,Yarn 会自动处理这些依赖关系,确保它们正确链接。
  • 统一的脚本执行: 可以在根目录运行命令,影响所有工作区,这对于构建和测试整个项目非常有用。

2. 版本锁定(Lockfile)

yarn.lock 文件是 Yarn 管理项目依赖的关键。这个文件锁定了安装的每个依赖的确切版本,确保所有环境中的依赖一致。

  • 确保一致性: 无论在哪里安装依赖(开发环境、生产环境、CI/CD 管道),yarn.lock 都确保安装的是相同版本的包。
  • 自动更新: 当添加、升级或移除依赖时,yarn.lock 文件会自动更新。

3. 私有包和镜像源

Yarn 支持使用私有包和配置不同的镜像源,这对于企业环境中的安全性和性能优化非常重要。

  • 私有包: 可以将包发布到私有的 NPM 注册表或其他兼容的存储,如 Artifactory。
  • 镜像源: 通过配置不同的镜像源,可以加速包的下载,特别是在网络连接到公共 NPM 注册表不理想的情况下。

4. 自动清理和缓存机制

Yarn 提供了自动清理和缓存机制,以优化项目的性能和磁盘空间使用。

  • 自动清理: yarn autoclean 命令可以删除不必要的文件,减少 node_modules 目录的大小。
  • 缓存机制: Yarn 缓存已下载的包,这意味着再次安装相同版本的包时不需要重复下载,从而加快安装速度。

5. 插件系统

Yarn 2 引入了插件系统,允许扩展 Yarn 的核心功能。这使得 Yarn 可以通过社区或自定义插件来适应特定的需求。

  • 自定义行为: 通过插件,可以添加新的命令、修改现有行为,甚至改变包的解析和安装方式。
  • 社区支持: Yarn 社区提供了各种插件,覆盖了从包分析到集成特定构建工具的多种用途。

6. 选择性版本解析

Yarn 允许你覆盖依赖的特定版本,这在处理依赖冲突或需要特定版本的包时非常有用。

  • 版本覆盖: 可以在 package.json 中指定版本解析规则,强制 Yarn 使用特定版本的依赖。

7. 网络性能和离线模式

Yarn 优化了网络性能,并支持离线模式,这对于网络连接不稳定或需要在没有互联网接入的环境中工作的情况非常有用。

四、Yarn与项目的集成

Yarn可以轻松集成到各种JavaScript项目中,包括Node.js后端项目和React、Vue等前端框架。在持续集成(CI)环境中,Yarn可以显著提高构建速度和效率。

  • 零安装模式: Yarn 2 引入的零安装模式允许将所有依赖(包括 Yarn 自身)直接存储在源代码仓库中,从而在 CI 环境中提供更快的构建启动时间。
  • 更好的缓存支持: Yarn 的缓存机制可以在 CI 环境中被有效利用,减少依赖安装的时间。

Yarn 与项目的集成通常涉及将 Yarn 作为项目的主要依赖管理工具,并确保它与项目的其他部分(如源代码、构建系统、开发工作流程等)无缝协作。以下是一些具体的例子,展示了如何在不同类型的项目中集成 Yarn:

1. 集成到 Node.js 项目

在 Node.js 项目中,Yarn 可以用来管理所有后端依赖。例如,如果你正在构建一个使用 Express 的服务器应用,你可以这样集成 Yarn:

(1)初始化项目:

yarn init

(2)添加 Express 作为依赖:

yarn add express

(3)在 package.json 中定义启动脚本:

"scripts": {
  "start": "node index.js"
}

 (4) 使用 Yarn 运行应用:

yarn start

2. 集成到前端框架(如 React)

在使用 React 等前端框架的项目中,Yarn 通常用于管理前端库和工具。例如,使用 Create React App 创建的 React 项目:

(1)创建 React 应用:

npx create-react-app my-app
cd my-app

(2)Yarn 已自动集成,可以用来添加额外的库,如 Redux:

yarn add redux react-redux

(3)运行开发服务器:

3. 在持续集成(CI)环境中的使用

在 CI 环境(如 Jenkins、Travis CI、GitHub Actions)中,Yarn 可以用于自动化安装依赖、运行测试和构建应用。例如,在 GitHub Actions 中集成 Yarn:

  1. 创建一个新的 workflow 文件: .github/workflows/node.js.yml

  2. 在 workflow 中定义步骤来安装依赖、运行测试和构建:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js
      uses: actions/setup-node@v1
      with:
        node-version: '14'
    - name: Install dependencies
      run: yarn install
    - name: Run tests
      run: yarn test
    - name: Build
      run: yarn build

 

4. 使用 Yarn Workspaces 管理多包项目

对于包含多个子项目(如库、服务或前端应用)的大型项目,Yarn Workspaces 非常有用:

(1)在项目根目录的 package.json 中启用 Workspaces:

(2)在 packages 目录下创建多个子项目,每个子项目都有自己的 package.json 文件。

(3) 在根目录运行 Yarn 命令来安装所有子项目的依赖:    

yarn install

五、Yarn的最佳实践

在使用Yarn时,有几个最佳实践可以帮助您更有效地管理依赖:

  • 定期更新依赖以保持项目的安全性和最新状态。
  • 利用Yarn的缓存机制来提高安装速度。
  • 注意安全性,定期审查依赖的安全性。

Yarn作为一个现代的包管理工具,为JavaScript项目的开发提供了巨大的便利。它的快速、可靠和安全的特性使其成为许多开发者的首选。随着JavaScript生态的不断发展,Yarn也在不断进化,为开发者提供更多的功能和改进。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐