【发布时间】:2020-06-01 16:12:34
【问题描述】:
我的项目基于gatsby-creative 启动器。我正在尝试添加一个 Open Graph 图像元属性。不幸的是,源文件夹中的图像地址没有被转换为正确的内容路径。这就是我所做的......
我首先向 siteMetaData 添加了“url”和“image”属性:
siteMetadata: {
title: `A Web Site`,
description: `Yes, this is a web site.`,
author: `Brent Arias`,
url: `https://website.com`,
image: `/images/snape.jpg`
},
到目前为止,我正在做与online documentation 相同的事情。但是,这些说明有一条注释,指出上述“图像”属性包含Path to your image you placed in the 'static' folder。嗯?我不相信我应该“在静态文件夹中放置图像”......我认为这是 Gatsby 的工作。但是继续前进......
从这个原始的 seo.js file 开始,我在 graphQL 查询中添加了相同的“url”和“image”属性:
const { site } = useStaticQuery(
graphql`
query {
site {
siteMetadata {
title
description
author
url
image
}
}
}
`
)
看起来,到目前为止一切都很好。最后,在同一个 seo.js 文件中,我为图像本身添加了一个条目:
{
property: `og:type`,
content: `website`,
},
{
property: `og:url`,
content: site.siteMetadata.url,
},
{
property: `og:image`,
content: `${site.siteMetadata.url}${site.siteMetadata.image}`
},
页面渲染时,元标记包含无用地址https://website.com/images/snape.jpg。
是的,online documentation 与这种方法不同,但它似乎是等价的。我不明白为什么地址没有被解析到应该找到图像的“静态”文件夹。
作为一种变通方法,我在 seo.js 文件中添加了以下内容:
import socialBanner from '../images/snape.jpg'
当我将 socialBanner 放入同一“og:image”属性的“内容”中时,它会按预期工作并解析为:https://website.com/static/snape-119744a51329473845d08af3df4b5290.jpg。
我不想要那个黑客。我需要更改哪些内容才能正确使用 Gatsby 工具(StaticQuery、Helmet 等)来处理此图像和地址?
【问题讨论】:
-
我不明白你想要什么不想要什么。
static文件夹的内容在构建时复制到public。这允许您引用 webpack 未处理的本地内容。如果您希望 webpack 对您的静态图像做一些事情,那么您可以按照所示导入它,但是您将它包含在一个包中是不必要的。 -
@coreyward 我想指向我的
images文件夹中的图像,然后自动处理到我的静态文件夹中(就像在线文档一样)。我的文件夹结构是 gatsby starter 给我的。在public文件夹下有一个static文件夹。公用文件夹从.gitignore中排除。解决方案中的其他图像来自.\src\images(具有由 git 捕获的内容)。我正在尝试遵循这种模式。同样,在线文档显示siteMetaData指向images文件夹。 Gatsby 应该为我将指定的图像翻译成静态文件夹。 -
可以让 gatsby 转换图像并使用 graphql 将其包含在 SEO 中,但最好在根目录下创建一个新的
static文件夹并将图像存储在那里。 gatsbyjs.org/docs/static-folder -
@BrentArias Ahhh,如果需要,您需要使用 GraphQL 来获取图像,但如果您没有对其进行任何调整大小或处理,那么您正在做的事情就没有必要了。跨度>
-
@coreyward online documentation 只显示
siteMetaData与指向image属性的/images/snape.jpg,对应的StaticQuery/Helmet 结果是指向static文件夹的相对路径.为什么文档会发生这种神奇的事情,而我却没有?
标签: javascript reactjs graphql gatsby