Cloudflare 以外のホストに公開する
riebeckite build は dist/ に静的ファイルを出力します。どのホストでも、この dist/ を配信すればサイトを公開できます。
deploy setup は Cloudflare 向けです。riebeckite publish run は Netlify、Vercel、GitHub Pages に対応します。
ホスト向けのファイルを生成する
Deploy プラグイン を使うと、ホストが読むリダイレクトやヘッダーのファイルを dist/ に含められます。
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
- リポジトリを Netlify に接続します。
- ビルドコマンドを
npm run build、公開ディレクトリをdistにします。 deploy({ provider: "netlify" })を設定してビルドします。
_redirects と _headers は dist/ に含まれるため、Netlify がそのまま読み取ります。
手元から CLI で公開する場合は、ビルド後に次を実行します。
npx netlify deploy --dir=dist --prod
Vercel
- リポジトリを Vercel に接続します。
- ビルドコマンドを
npm run build、出力ディレクトリをdistにします。 deploy({ provider: "vercel" })を設定してビルドします。
リダイレクトを手書きする代わりに、ビルドで vercel.json を生成できます。末尾スラッシュの扱いは trailingSlash で指定します。
GitHub Pages
deploy({ provider: "github-pages", cname: "example.com" })を設定します。独自ドメインを使わない場合はcnameを省略します。npm run buildを実行します。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" }) を設定し、次のワークフローで公開できます。
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 をリポジトリのシークレットに登録してください。
- 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/やプラグインのキャッシュは公開しません。