Создайте файл gatsby-node.js
в корневом каталоге вашего проекта, если у вас его еще нет, и добавьте следующее:
const path = require("path")
exports.onCreateWebpackConfig = ({ stage, actions }) => {
actions.setWebpackConfig({
resolve: {
modules: [path.resolve(__dirname, "src"), "node_modules"],
alias: { react: path.resolve("./node_modules/react") },
},
})
}
Это делает две вещи:
- Это сделает
src
базой для ваших импортов - Это гарантирует, что вы не столкнетесь со странными ошибками из-за загрузки нескольких версий React (плагины, которые должны ссылаться на React, могут вызвать это).
Теперь в своем файле Header.js вы можете сделать следующее:
import logo from "images/logo.png"
export const Header =>
<header>
<img src={logo} alt="Logo Alt Text" />
</header>
Фактически полученный результат будет отличаться в зависимости от размера файла вашего логотипа.Если он достаточно мал, Gatsby встроит его, используя base64, уменьшая количество HTTP-запросов, необходимых для загрузки вашей страницы.Если он больше, ему будет присвоен отпечаток ресурса и он будет добавлен к активам, доступным при создании сайта, а URL-адрес файла будет использоваться для атрибута src
(например, /images/logo-123asd.png
).Это позволит вам использовать заголовки кеша HTTP, которые сообщают браузеру, что кешировать этот файл безопасно в течение длительного времени;если он изменится, URL изменится, и вам не нужно беспокоиться о признании недействительной кэшированной версии.