因此,正如您在评论中发布的链接中所述,有多种方法可以将图像/资产包含在 gatsby 中:
- 查询图片来自
graphql
import
图片,获取路径
- 将图像复制到
static
目录
设置
假设你有一个这样的组件:
// src/pages/sample.js
import React from 'react'
import { css } from '@emotion/core'
export default () => <div css={css`
width: 10rem;
height: 10rem;
background: url( ... );
`} />
查询它
公共网址
如果您使用任何默认启动器,则很可能您的src/images
文件夹已设置为gatsby-source-file-system
让 Gatsby 了解您的图像。假设您知道文件的名称,您可以像这样查询它:
{
// ⇣ `base` is file name with extension.
file (base: { eq: "image.png" }) {
publicURL
}
}
如链接中所述,查询该字段publicURL
将为您提供文件名的路径:
export default ({ data }) => <div css={css`
width: 10rem;
height: 10rem;
background: url(${data.file ? data.file.publicURL : 'your/fallback.png'});
`} />
export const query = graphql`
query {
file(base: { eq: "image.png" }) {
publicURL
}
}
`
图像锐化
Gatsby 通常带有sharp
,它允许您转换图像等。举个简单的例子,这个查询将图像的大小调整为 200px 宽度:
export const query = graphql`
query {
file(base: { eq: "image.png" }) {
childImageSharp {
fixed(width: 200) {
src
}
}
}
}
`
您可以在 访问它data.file.childImageSharp.fixed.src
。
导入图像
让 webpack 处理它:
import myImagePath from '../relative/path/to/image.png';
export default () => <div css={css`
width: 10rem;
height: 10rem;
background: url(${myImagePath});
`} />
复制到static
目录
创建一个以static
您的根文件夹命名的目录,除非已经有一个。将您的图像复制到其中:
root
|--src
`--static
`--image.png
静态中的所有文件都将直接复制到构建中,因此您可以像这样链接到图像:
export default () => <div css={css`
width: 10rem;
height: 10rem;
background: url(/image.png);
`} />
如果您使用pathPrefix
in gatsby-config.js
,请导入withPrefix
fromgatsby
并将其包裹在图像路径周围。
这是前两种方法的代码框。
希望有帮助!