将 Favicon 添加到 NextJs App 路由器应用程序

Naz*_*uma 26 javascript reactjs next.js next.js13

我对新的 Next.js App Router有疑问。他们删除了 head.js 文件,现在(正如文档中所写)我必须在 layout.ts 中使用元数据。我的图标名称是favicon.png。

我如何在这里指定它:

export const metadata = {
  title: 'Create Next App',
  description: 'Generated by create next app',
}
Run Code Online (Sandbox Code Playgroud)

Rag*_*rma 50

这是在 Next.js 13.4 稳定版本中使用 Favicon 的最简单方法。

  1. 您需要将 jpg、png 或 SVG 转换为 .ico。只需几秒钟。

  2. 将您的 .ico 文件重命名为 icon.ico 并将其粘贴到应用程序文件夹中,然后从应用程序文件夹中删除 favicon.ico

完毕

  • 这是唯一有效的解决方案!多谢 (4认同)

小智 24

您可以按如下方式进行:

export const metadata = {
  icons: {
    icon: '/icon.png',
  },
};
Run Code Online (Sandbox Code Playgroud)

输出将是

<link rel="icon" href="/icon.png" />
Run Code Online (Sandbox Code Playgroud)

查看有关图标元数据的所有文档:

https://beta.nextjs.org/docs/api-reference/metadata#icons

  • 您还需要将 icon.jpg 添加到 /public。 (2认同)
  • 需要注意的是,favicon 的名称必须是“icon” (2认同)

小智 10

要添加多个图标并添加其他属性,例如type和sizes:

// layout.tsx
    
export const metadata: Metadata = {
  ...,
  icons: [
    {
      rel: 'icon',
      type: 'image/png',
      sizes: '32x32',
      url: '/favicon/favicon-32x32.png',
    },
    {
      rel: 'icon',
      type: 'image/png',
      sizes: '16x16',
      url: '/favicon/favicon-16x16.png',
    },
    {
      rel: 'apple-touch-icon',
      sizes: '180x180',
      url: '/favicon/apple-touch-icon.png',
    },
  ],
}
Run Code Online (Sandbox Code Playgroud)


Yil*_*maz 5

根据此处的文档,添加link也RootLayout可以工作

export default function RootLayout({
  children,
}: {
  children: React.ReactNode;
}) {
  return (
    <html lang="en">
      <body>
        <link rel="icon" href="/favicon.ico" sizes="any" />
        {children}
      </body>
    </html>
  );
}
Run Code Online (Sandbox Code Playgroud)


aco*_*ing 5

// app/layout.tsx

import { Metadata } from 'next';

export const metadata: Metadata = {
  icons: {
    icon: ['/favicon.ico?v=4'],
    apple: ['/apple-touch-icon.png?v=4'],
    shortcut: ['/apple-touch-icon.png'],
  },
  manifest: '/site.webmanifest',
};

// public/
//    |- ...
//    |- android-chrome-192x192.png
//    |- android-chrome-512x512.png
//    |- apple-touch-icon.png
//    |- favicon-16x16.png
//    |- favicon-32x32.png
//    |- favicon.ico
//    |- site.webmanifest
//    |- ...
Run Code Online (Sandbox Code Playgroud)

图标转换器: https: //favicon.io/favicon-converter/