本文档提供了 Gatsby 图片处理系统的详细概述,该系统负责优化和交付 Gatsby 网站中的响应式图片。图片处理系统由多个集成插件组成,它们协同工作以获取、转换和渲染优化的图片。
有关一般文件处理的信息,请参阅 数据层 和 数据源插件。有关样式和 CSS 处理的信息,请参阅 样式和 CSS 页面。
Gatsby 的图片处理系统包含三个主要组件:
这些插件与各种数据源插件协同工作,创建一个端到端的图片处理流程。
来源:packages/gatsby-plugin-sharp/package.json, packages/gatsby-transformer-sharp/package.json, packages/gatsby-plugin-image/package.json
来源:packages/gatsby-source-contentful/package.json, packages/gatsby-source-wordpress/package.json, packages/gatsby-source-shopify/package.json, packages/gatsby-plugin-sharp/package.json, packages/gatsby-transformer-sharp/package.json
gatsby-plugin-sharp 是 Sharp 图片处理库的封装。它提供了图片操作和优化的方法。
该插件与 Gatsby 的构建流程集成,以:
来源:packages/gatsby-plugin-sharp/package.json
gatsby-transformer-sharp 插件将数据源插件(如 gatsby-source-filesystem)创建的图片节点转换为 ImageSharp 节点,这些节点可以通过 GraphQL 查询。
ImageSharp 节点。该转换器向 GraphQL schema 添加了以下字段:
| 字段 | 描述 |
|---|---|
childImageSharp | 文件节点上包含图片转换的字段。 |
gatsbyImageData | 为 gatsby-plugin-image 提供优化图片数据的字段。 |
fluid (旧版) | 用于流式/响应式图片的字段。 |
fixed (旧版) | 用于固定尺寸图片的字段。 |
来源:packages/gatsby-transformer-sharp/package.json
gatsby-plugin-image 插件提供了 React 组件,用于显示具有最佳加载模式的响应式图片。
来源:packages/gatsby-plugin-image/package.json
Gatsby 中完整的图片处理流程涉及从数据源到渲染的多个步骤。
来源:packages/gatsby-plugin-sharp/package.json, packages/gatsby-transformer-sharp/package.json, packages/gatsby-plugin-image/package.json
Gatsby 的图片处理系统与各种数据源插件集成,以处理来自不同来源的图片。
| 数据源插件 | 描述 | 集成 |
|---|---|---|
| gatsby-source-filesystem | 从本地文件系统获取文件。 | 创建 transformer-sharp 可以处理的文件节点。 |
| gatsby-source-contentful | 从 Contentful CMS 获取内容。 | 对 gatsby-plugin-image 具有内置支持。 |
| gatsby-source-wordpress | 从 WordPress 获取内容。 | 使用 gatsby-plugin-image 处理 WordPress 媒体库。 |
| gatsby-source-shopify | 从 Shopify 获取内容。 | 处理 Shopify 产品图片。 |
| gatsby-source-drupal | 从 Drupal 获取内容。 | 处理 Drupal 媒体实体。 |
来源:packages/gatsby-source-contentful/package.json, packages/gatsby-source-wordpress/package.json, packages/gatsby-source-shopify/package.json, packages/gatsby-source-drupal/package.json
gatsby-transformer-sqip 插件为图片创建低质量的 SVG 版本,可用作实际图片加载时的占位符。
来源:packages/gatsby-transformer-sqip/package.json
一些数据源插件(如 contentful、wordpress、drupal)支持图片 CDN URL 生成,允许通过内容分发网络优化图片交付。
来源:packages/gatsby-source-contentful/CHANGELOG.md, packages/gatsby-source-wordpress/CHANGELOG.md, packages/gatsby-source-drupal/CHANGELOG.md
Gatsby 的图片处理系统同时优化构建时效率和运行时性能。
构建时优化:
运行时优化:
图片处理可能非常消耗内存。考虑因素包括:
来源:packages/gatsby-plugin-sharp/CHANGELOG.md, packages/gatsby-source-contentful/CHANGELOG.md
此图显示了使用 gatsby-plugin-image 和 gatsby-transformer-sharp 时的典型流程。
来源:packages/gatsby-plugin-image/package.json, packages/gatsby-transformer-sharp/package.json, packages/gatsby-plugin-sharp/package.json
Gatsby 的图片处理系统提供了一个全面的解决方案,用于优化和交付 Gatsby 网站中的响应式图片。通过结合多个专用插件,它实现了高效的图片处理、优化和渲染。该系统深度集成了 Gatsby 的数据层和构建流程,确保了开发人员和最终用户的最佳性能。