能登 要

札幌在住のiOSアプリ開発者。SwiftUI により分割されたデバイス間を縦横にやりとりできる考え方に転換しています。

iOSアプリ開発者。2009年のiPhoneアプリ開発開始時期から活動。開発言語のアップデートの中でSwiftUIおよび周辺技術に着目中。

GatsbyJS用Google Fonts パッケージの置き換え

本ブログ更新時にトラブルが起きた際の対処メモ。GatsbyJSのパッケージ置き換え方法について。

1) 発端 - デバッグ/ビルド時に警告が出るように

本ブログはGatsbyJSでビルドしたものをFirebase Hostingにデプロイしている。Blog機能を一部改修しデバッグしたところ以下のエラーが出るようになった。

ENOENT: no such file or directory, stat '.cache/google-fonts//fonts'

調べてみるとGoogle Fontsをプリフェッチする機能が最新のGatsbyJSに追随できていないらしい。

gatsby-plugin-prefetch-google-fonts no such file or directory .cache/google-fonts//fonts · Issue #27607 · gatsbyjs/gatsby

追随できていないパッケージ、

gatsby-plugin-prefetch-google-fonts | Gatsby

の設定を流用できるパッケージを探したところ、

gatsby-plugin-webfonts | Gatsby

を置き換えてみる。

2) パッケージのインストール&アンインストール

npm で導入したGatsbyJS内の不要パッケージをアンインストール後、必要パッケージをインストールする。

ブログが格納されているフォルダに移動後パッケージをパッケージからアンインストールする。

npm uninstall gatsby-plugin-prefetch-google-fonts --save

続いて置き換え用パッケージをインストールする。

npm install gatsby-plugin-webfonts --save

--save パラメータをつけることでpackage.json にインストール対象が記憶される。

インストールしたバージョンでバグフィックスしたマイナーアップde-toがある場合、nmpから警告が出る場合がある。npm audit fix を呼び出してバグフィックを取り込む。

npm audit fix

3) GatsbyJS設定の編集

GatsbyJS設定ファイル(gatsby-config.js)のGoogleWebFont設定内容を書き換える。書き換えエディタはVSCodeを使用。

元の設定、

{
  resolve: `gatsby-plugin-prefetch-google-fonts`,
  options: {
    fonts: [
      {
        family: `Montserrat`,
        subsets: [`latin`],
        variants: [`300`, `400`, `500`, `600`, `700`, `900`]
      },
      {
        family: `Marck Script`,
        subsets: [`latin`],
        variants: [`400`]
      },
      {
        family: `Dancing Script`,
        subsets: [`latin`],
        variants: [`400`, `500`, `600`, `700`]
      }
    ],
  },
},

の箇所を書き換える

{
  resolve: `gatsby-plugin-webfonts`,
  options: {
    fonts: {
      google: [
        {
          family: `Montserrat`,
          subsets: [`latin`],
          variants: [`300`, `400`, `500`, `600`, `700`, `900`]
        },
        {
          family: `Marck Script`,
          subsets: [`latin`],
          variants: [`400`]
        },
        {
          family: `Dancing Script`,
          subsets: [`latin`],
          variants: [`400`, `500`, `600`, `700`]
        }
    ],
    },
  },
},

4) GatsbyJS動作確認&ビルド

動作確認はgatsby develop で行う。

gatsby develop

上記コマンドでlocalhost:8080 で動作を確認できる。

動作確認後deploy向けのビルドで問題なければパッケージの置き換え完了となる。

gatsby build