🌱

Gridsomeに導入しておきたいプラグイン

4 min read

Gridsomeでサイトを作る際に導入しておきたいプラグインを紹介します。

サイトマップ

@gridsome/plugin-sitemapはビルド時にsitemap.xmlを自動的に出力してくれるプラグインです。

下記コマンドでインストールします。

$ yarn add @gridsome/plugin-sitemap

gridsome.config.jsにプラグインの読み込みを設定します。

gridsome.config.js
module.exports = {
  
  // 必須
  siteUrl: 'https://・・・',
  
  // 中略
  
  plugins: [
    
    // 中略
    
    // 追加
    {
      use: '@gridsome/plugin-sitemap',
      
      // 個別に変更したい項目がある場合に設定
      options: {
        // サイトマップのファイルの出力先。デフォルトは/sitemap.xml
        output: '/sitemap.xml',
        
        // URLを指定して個別にlastmod等を設定する場合の例
        config: {
          '/articles/*': {
            changefreq: 'weekly',
            priority: 0.5,
            lastmod: '2020-02-19',
          },
          '/about': {
            changefreq: 'monthly',
            priority: 0.7,
            lastmod: '2020-05-12',
          }
        },
        
        // サイトマップに含めたいURLがある場合にパスを設定
        include: ['/blog', '/blog/**'],
      
        // サイトマップから除外したいURLがある場合にパスを指定
        exclude: ['/blog', '/blog/**'],
        
        // 静的ファイルを含めたい場合
        staticUrls: [
          {
            url: '/images/',
            img: [
              {
                url: '/images/img1.jpg',
                caption: 'Image One',
                title: 'The Title of Image One',
                geoLocation: 'Trondheim, Norway',
                license: 'https://creativecommons.org/licenses/by/4.0/'
              },
              {
                url: '/images/img2.jpg',
                caption: 'Image Two',
                title: 'The Title of Image Two',
                geoLocation: 'Trondheim, Norway',
                license: 'https://creativecommons.org/licenses/by/4.0/'
              }
            ]
          }
        ]
      }
    },
  ]
}

lastmodはconfigオプションで設定した場合にのみ出力されます。
priorityやchangefreqはGoogleでは無視されますが、lastmodは影響があるようです。
また、実際に更新がないにもかかわらずlastmodを頻繁に更新するとペナルティがあるようです。

PWA

Webサイトの評価をするChromeの拡張機能LighthouseでPWAの項目に対応するため、gridsome-plugin-pwaを使用します。

下記コマンドでgridsome-plugin-pwaをインストールします。

$ yarn add gridsome-plugin-pwa

gridsome.config.jsでプラグインの設定します。

gridsome.config.js
module.exports = {
  // 中略
  
  plugins: [
    {
      use: 'gridsome-plugin-pwa',
      options: {
          // Service Worker オプション
          disableServiceWorker: false,
          serviceWorkerPath: 'service-worker.js',
          cachedFileTypes: 'js,json,css,html,png,jpg,jpeg,svg,gif',

          // Manifest オプション
          manifestPath: 'manifest.json',
          title: 'タイトル',
          startUrl: 'https://xxxxxxxxxxxxx',
          display: 'standalone',
          statusBarStyle: 'default',
          themeColor: '#666600',
          backgroundColor: '#ffffff',
          icon: './src/favicon.png',
          shortName: '短いタイトル',
      }
    },
  ]
}

iconは各種サイズつくってくれます。

robots.txt

プラグインを入れるほどのことはないかもしれませんが、gridsome-plugin-robots-txtは自動でrobots.txtを生成してくれます。

下記コマンドでgridsome-plugin-robots-txtをインストールします。

$ yarn add gridsome-plugin-robots-txt

gridsome.config.jsにプラグインの読み込みを設定します。

gridsome.config.js
module.exports = {
  // 中略
  
  plugins: [
    
    // 中略
    
    // 追加
    {
      use: 'gridsome-plugin-robots-txt',
    },
  ]
}

おまけ:Google Analytics

公式にある@gridsome/plugin-google-analyticsはGoogle Analytics 4の測定ID(G-XXXXXXXXXX)に対応していないのでmain.jsに直接記述しました。

src/main.js
import DefaultLayout from "~/layouts/Default.vue";

export default function (Vue, { head }) {
  // Set default layout as a global component
  head.htmlAttrs = { lang: 'ja' }

  // 追記
  head.script = [
    {
      src: 'https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX',
      async: true
    },
    {
      innerHTML: `
        window.dataLayer = window.dataLayer || [];
        function gtag(){dataLayer.push(arguments);}
        gtag('js', new Date());

        gtag('config', 'G-XXXXXXXXXX');
      `
    }

  ]

  Vue.component("Layout", DefaultLayout);
}

まとめ

Gridsomeはプラグインを含め、今はメンテナンスがほとんどされていないようです。
やっぱり開発も盛んで部分的にSSGとSSRを使い分けたりできるNext.jsにするべきか。

Discussion

ログインするとコメントできます