Gatsby.jsでAdobe Fontsを使う

Gatsby.jsでAdobe Fontsを使う:


概要

GatsbyでWebFontを使う方法を調べてみました。

今回はAdobe Fontsを使っていきます(Google Fontsなどは適宜置き換えて読んでください)


導入

  1. まずはフォントを入れます。
    Adobe Fontsで好きなフォントをアクティベートしてプロジェクトに追加します。

    下のような画面が出るので、kitIdをメモする。


    Screenshot 2018-10-28 16.11.57.png

  2. Gatsbyではindex.htmlに直接scriptを貼ることは推奨されていないので、
    webfontloaderというパッケージを使ってロードします。

    まずは、yarn add webfontloader

    このフォントをロードしたいコンポーネントで(できればLayout系がいいと思います)



    componentDidMount(){ 
      WebFont.load({ 
        typekit: { 
          id: 'xxxxxx' 
        } 
      }); 
    } 
    
    これでフォントはロードされます。


  3. gatsby developはこれで通るのですが、gatsby buildはwebpackのビルドの過程でwindow is not definedを吐いて失敗するので、このページの通りに従い、
gatsby-node.js
exports.onCreateWebpackConfig = ({ stage, loaders, actions}) => { 
     if (stage === 'build-html') { 
       actions.setWebpackConfig( 
         { 
           module: { 
             rules: [ 
               { 
                 test: /webfontloader/, 
                 use: loaders.null() 
               } 
             ] 
           } 
         } 
       );    
     } 
   } 
を追加すれば無事にビルドが通ります。ちなみに、Reactのコンポーネント内でwindowdocumentを参照している箇所がある場合も同様のビルド失敗をしますが、その時はwindowが定義されているかどうかをチェックする(typeof)処理を書くことでwebpackコンパイル時に落ちないようになります。


まとめ

Typography.jsと合わせて使うと非常に快適にフォントを扱えるのでおすすめです。

コメント

このブログの人気の投稿

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-04-30 23:37:32 RSSフィード2021-04-30 23:00 分まとめ(42件)

投稿時間:2023-02-05 02:09:04 RSSフィード2023-02-05 02:00 分まとめ(9件)