AstroでmicroCMSのコンテンツを利用したサイトを静的ビルド + Cloudflare Pagesにデプロイした話

最近Astroをよく使っている人に向けて、microCMSのデータを取得する方法を簡単にまとめました。まず、microCMSのAPIキーを取得し、環境変数に設定します。次に、microCMSのJS SDKを使って記事情報を取得するためのライブラリをインストールし、APIクライアントを作成します。作成したクライアントを使用して情報を取得して表示する処理を追加しましょう。また、Astroでのビルド・デプロイには、環境変数の扱いに注意が必要です。

広告ここから
広告ここまで

目次

    最近Astroをちょくちょく触っているので、microCMSのデータを使いたい時のやり方を簡単にまとめました。

    microCMSのAPIキーを取得する

    microCMSのAPIにアクセスするため、APIキーを取得しましょう。

    取得はmicroCMSの管理画面から行えます。

    取得後、環境変数に設定します。

    .env

    MICROCMS_API_KEY=XXXX

    microCMSのJS SDKで記事情報を取得する

    JS SDKと、環境変数に保存したAPIキーで記事情報を取得します。

    まずはライブラリをインストールしましょう。

    % npm i microcms-js-sdk

    その後、APIクライアントを作成・exportするファイルを用意します。SSRやHybrid Renderingを利用する場合、すこし書き方が変わることに注意しましょう。SSRなどでの書き方は後日紹介します。

    import { createClient } from 'microcms-js-sdk'
    
    export const microCMSClient = process.env.MICROCMS_API_KEY
      ? createClient({
          serviceDomain: 'YOUR_DOMAIN_NAME',
          apiKey: process.env.MICROCMS_API_KEY as string,
        })
      : undefined
    

    あとは作成したクライアントを利用して、情報を取得します。

    ビルド時にだけ実行して欲しいので、—-のブロック内に書きましょう。

    ---
    const { contents: events } = await microCMSClient.get({
        endpoint: 'events',
        queries: {
          limit: 20,
        },
    })
    ---
    <ul>
        {events.map(event => (
            <li>
                <span>{event.title}</span>    
            </li>
        ))}
    </ul>
    

    上手くいけば、npm run devnpm run buildで記事情報が取得できていることを確認できます。

    GitHub Actionsでビルド・デプロイする場合、環境変数に注意しよう

    Astroにはビルド・デプロイ用のGitHub Actionが公開されています。

    https://github.com/withastro/action

    が、環境変数の読み込みに対応していない様子のため、microCMSなどのAPIキーを安全に扱うには自前でコマンドを用意した方が良さそうです。

    name: Deploy
    
    on:
      push:
        branches:
          - main
    
    jobs:
      deploy:
        runs-on: ubuntu-latest
        name: Deploy
        steps:
          - uses: actions/checkout@v2
    
          - name: Setup Node
            uses: actions/setup-node@v3
            with:
              node-version: 16
              cache: yarn
          - name: Install
            shell: "bash"
            run: yarn install
          - name: Build
            shell: "bash"
            run: |
              MICROCMS_API_KEY=${{ secrets.MICROCMS_API_KEY }} yarn run build  
          - name: Publish
            uses: cloudflare/[email protected]
            with:
              apiToken: ${{ secrets.CF_API_TOKEN }}
              accountId: ${{ secrets.CF_ACCOUNT_ID }}
              command: pages publish --project-name=${{ secrets.CF_PROJECT_NAME }} ./dist
    
    

    Ref

    • https://docs.astro.build/en/guides/environment-variables/
    広告ここから
    広告ここまで
    Home
    Search
    Bookmark