Итак, как указано в ссылке, которую вы разместили в комментарии, есть несколько способов добавить изображение / ресурсы с помощью gatsby:
- Запросить изображение из
graphql
import
image, get path - Скопируйте изображение в
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( ... );
`} />
Запрос
PublicURL
Если вы используете какой-либо из стартеров по умолчанию, вероятно, ваша папка src/images
была настроена с gatsby-source-file-system
, поэтомуГэтсби знает о ваших изображениях.Скажем, вы знаете имя файла, вы можете запросить его следующим образом:
{
// ⇣ `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
}
}
`
ImageSharp
Gatsby обычно поставляется с sharp
, что позволяет преобразовывать изображения и многое другое.Для простого примера этот запрос изменяет размер изображения до ширины 200 пикселей:
export const query = graphql`
query {
file(base: { eq: "image.png" }) {
childImageSharp {
fixed(width: 200) {
src
}
}
}
}
`
И вы можете получить к нему доступ в data.file.childImageSharp.fixed.src
.
Импортировать изображение
Позвольте веб-пакетуобработайте это:
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
из gatsby
и оберните его вокруг пути изображения.
Вот codesandbox для первых 2 методов.
Надеюсь, это поможет!