如果你曾经上线了一个新项目,却发现浏览器标签页上还显示着那个通用的紫色 Gatsby 图标,别担心,你并不孤单。这简直是“我刚看完教程还没改配置”的终极标志。虽然 Gatsby 在性能上非常强大,但其基于文件的结构有时会让添加 favicon for gatsby site 这种简单的任务变得比预想中复杂。

我们都经历过:把 favicon.ico 扔进根目录,刷新三次,结果……什么都没发生。这是因为 Gatsby 的构建流程处理资源的方式与标准 HTML 网站不同。要获得像 Stripe 或 GitHub 那样专业的图标效果,你需要一套能自动处理多分辨率和 PWA 需求的策略。

最佳方案:使用 gatsby-plugin-manifest

在 2026 年,行业标准依然是 gatsby-plugin-manifest。为什么?因为它不只是添加一个图标,而是为 Android、iOS 和桌面浏览器生成一整套尺寸。它还会生成 manifest.webmanifest 文件,如果你想让网站支持 PWA,这至关重要。你可以在我们的 manifest 指南 中了解更多细节。

第一步:安装插件

首先,确保你的项目中安装了该插件。大多数 Gatsby starter 模板都会默认包含它,但最好检查一下 package.json。

npm install gatsby-plugin-manifest

第二步:配置 gatsby-config.js

这是关键步骤。你需要让插件指向一个高分辨率的源图片(至少 512x512 像素)。插件会在构建过程中自动将其缩放为所有需要的格式。

module.exports = {
  plugins: [
    {
      resolve: 'gatsby-plugin-manifest',
      options: {
        name: '我的 Gatsby 网站',
        short_name: 'Gatsby站',
        start_url: '/',
        background_color: '#ffffff',
        theme_color: '#663399',
        display: 'minimal-ui',
        icon: 'src/images/icon.png', // 源图标路径
      },
    },
  ],
}

第三步:验证输出

运行 gatsby build 后,查看 public 文件夹。你会看到一堆不同尺寸的 PNG 文件。这种自动化方法确保了无论用户是在高分屏 Mac 还是旧安卓手机上,图标都非常清晰。(小贴士:源文件务必使用正方形 PNG,以防拉伸)。

手动方法:使用 Static 文件夹

有时候你不想让插件处理你的图标,比如你有一个精心优化的 .ico 文件或想直接使用 SVG。这时可以使用项目根目录下的 static 文件夹。

为什么使用 static 文件夹?

放入 /static 文件夹的任何内容都会被直接复制到 /public,不经过 Webpack 处理。如果你把 favicon.ico 放在 /static/favicon.ico,它就能通过 yourdomain.com/favicon.ico 直接访问。虽然这种方法比较“原始”,但对于简单需求非常有效。

添加 Link 标签

你需要告诉浏览器图标在哪。在 Gatsby 中,你可以使用 Gatsby Head API 将标签注入 HTML 头部。

export const Head = () => (
  <>
    <link rel="icon" href="/favicon.ico">

)

常见坑点

即使有了这些工具,也可能出问题。以下是生产环境中最常见的三个坑:

归根结底,Favicon 是你网站在标签页上的“脸面”。花十分钟配置好 gatsby-plugin-manifest,能让你的网站从“业余项目”瞬间提升到“专业品牌”的档次。如果你需要快速生成高分辨率源图,Mzu favicondl 可以帮你轻松搞定。