Color mode

Cloudflare 以外のホストに公開する

riebeckite build は dist/ に静的ファイルを出力します。どのホストでも、この dist/ を配信すればサイトを公開できます。

deploy setup は Cloudflare 向けです。riebeckite publish run は Netlify、Vercel、GitHub Pages に対応します。

ホスト向けのファイルを生成する

Deploy プラグイン を使うと、ホストが読むリダイレクトやヘッダーのファイルを dist/ に含められます。

ts
import { defineConfig } from "@riebeckite/core";
import { deploy } from "@riebeckite/plugin-deploy";
 
export default defineConfig({
  plugins: [
    deploy({
      provider: "netlify",
      headers: { "X-Frame-Options": "DENY" },
    }),
  ],
});

provider には次の値を指定します。

ホスト provider 生成されるファイル
Cloudflare Pages cloudflare-pages _redirects、_headers
Cloudflare Workers cloudflare-workers _redirects、_headers
Netlify netlify _redirects、_headers
Vercel vercel vercel.json
GitHub Pages github-pages .nojekyll、404.html、CNAME、リダイレクト用の HTML

複数のホストを同時に指定できます。同じパスに異なる内容が出力される場合は、ビルドがエラーになります。

リダイレクトは、公開済みエントリの公開リダイレクトからだけ生成されます。非公開のノートの旧パスが混ざることはありません。ファイルの詳細は Deploy プラグイン を参照してください。

Netlify

  1. リポジトリを Netlify に接続します。
  2. ビルドコマンドを npm run build、公開ディレクトリを dist にします。
  3. deploy({ provider: "netlify" }) を設定してビルドします。

_redirects と _headers は dist/ に含まれるため、Netlify がそのまま読み取ります。

手元から CLI で公開する場合は、ビルド後に次を実行します。

sh
npx netlify deploy --dir=dist --prod

Vercel

  1. リポジトリを Vercel に接続します。
  2. ビルドコマンドを npm run build、出力ディレクトリを dist にします。
  3. deploy({ provider: "vercel" }) を設定してビルドします。

リダイレクトを手書きする代わりに、ビルドで vercel.json を生成できます。末尾スラッシュの扱いは trailingSlash で指定します。

GitHub Pages

  1. deploy({ provider: "github-pages", cname: "example.com" }) を設定します。独自ドメインを使わない場合は cname を省略します。
  2. npm run build を実行します。
  3. dist/ を公開ブランチ(gh-pages など)へ push するか、GitHub Actions から公開します。

dist/ には .nojekyll が含まれるため、Jekyll の処理を経ずに配信されます。404.html と、リダイレクトごとの HTML も生成されます。

GitHub Pages は _redirects を解釈しません。リダイレクトはメタリフレッシュを使う HTML になり、/ からのリダイレクトは生成されません。

CI から公開する

CI でも deploy() はファイルを書き出すだけなので、ビルド後に dist/ をホストへアップロードします。認証情報はリポジトリのシークレットに置きます。

GitHub Pages

deploy({ provider: "github-pages" }) を設定し、次のワークフローで公開できます。

yaml
name: Deploy to GitHub Pages
on:
  push:
    branches: [main]
permissions:
  contents: read
  pages: write
  id-token: write
jobs:
  deploy:
    runs-on: ubuntu-latest
    environment:
      name: github-pages
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
      - run: npm ci
      - run: npm run build
      - uses: actions/upload-pages-artifact@v3
        with:
          path: dist
      - uses: actions/deploy-pages@v4

Netlify

GitHub Pages 以外では、ビルド後のステップだけを差し替えます。Netlify CLI を使う場合は、NETLIFY_AUTH_TOKEN と NETLIFY_SITE_ID をリポジトリのシークレットに登録してください。

yaml
      - run: npm ci
      - run: npm run build
      - run: npx netlify deploy --dir=dist --prod
        env:
          NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
          NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}

Vercel

Vercel はリポジトリの Git 連携でビルドする構成が簡単です。出力ディレクトリを dist に設定し、deploy({ provider: "vercel" }) で vercel.json を生成しておきます。

共通の注意点

  • どのホストでも、site.baseUrl を公開 URL に合わせてからビルドします。
  • deploy() はファイルを出力するだけで、アップロード、認証、キャッシュの削除は行いません。
  • ホストのビルド設定では、必ず dist/ を公開ディレクトリに指定します。.riebeckite/ やプラグインのキャッシュは公開しません。

Local Graph

Nearby Notes