Favicon

1import React from 'react';
2
3const Favicon = () => {
4  if (process.env.NODE_ENV === 'development') {
5    return (
6      <link rel="icon" type="image/svg+xml" href="/favicon/favicon-dev.svg" />
7    );
8  }
9
10  return (
11    <>
12      <link
13        rel="apple-touch-icon"
14        sizes="180x180"
15        href="/favicon/apple-touch-icon.png"
16      />
17      <link
18        rel="icon"
19        type="image/png"
20        sizes="32x32"
21        href="/favicon/favicon-32x32.png"
22      />
23      <link
24        rel="icon"
25        type="image/png"
26        sizes="16x16"
27        href="/favicon/favicon-16x16.png"
28      />
29      <link rel="manifest" href="/favicon/site.webmanifest" />
30      <link
31        rel="mask-icon"
32        href="/favicon/safari-pinned-tab.svg"
33        color="#5bbad5"
34      />
35      <meta name="msapplication-TileColor" content="#ffffff" />
36      <meta name="theme-color" content="#ffffff" />
37    </>
38  );
39};
40
41export default Favicon;

解説

実装手順

  1. Favicon Generator で favicon と関連するタグ、Webmanifestを作成
  2. 上記一式を public/favicon に設置
  3. Favicon用のタグをまとめたコンポーネントを作成
  4. pages/_document.tsx にFaviconコンポーネントを設置

Tips: 開発時に Favicon を切り替える

本コードでは process.env を使って開発中であれば開発用の favicon(🚧) を表示しています。本番環境のURLを同時に開いている場合しばしば変更が反映されていないと勘違いすることがありますがこれにより混乱を防ぐことができます。

使用ライブラリ

なし

参考サイト

なし