Navigation

Adapter リファレンス

Cloudflare Pages、GitHub Pages、Netlify、Vercel の設定。

Adapter リファレンス

Adapter は、Makit の静的成果物を各ホスティングサービスへ合わせる設定ファイル、リダイレクト、ヘッダー、CI を生成します。Adapter は任意です。使わない場合は dist/ を任意の静的ホスティングへ配置できます。

# 使用するサービスの Adapter だけを開発依存関係に追加します
pnpm add -D @natsuneko-laboratory/makit-adapter-github-pages

Adapter は文字列ではなくファクトリー関数の戻り値を deployment.adapter に指定します。

import { defineConfig } from "@natsuneko-laboratory/makit";
import githubPages from "@natsuneko-laboratory/makit-adapter-github-pages";

export default defineConfig({
  title: "My Documentation",
  deployment: { adapter: githubPages() },
});

生成予定のファイルは pnpm exec makit check で確認し、生成だけを行うには pnpm exec makit adapter generate を実行します。トークンや秘密鍵を設定ファイルへ書かず、各サービスの環境変数または認証機構を使ってください。

共通の deployment 設定

項目 既定値 説明
configFile.mode "generated" generated は Makit が管理、merge は既存設定と統合、manual はサービス設定を自分で管理します。
redirects true redirects のルールを Adapter へ渡します。
headers false headers のルールを Adapter へ渡します。非対応サービスでは警告になります。
cleanUrls false 拡張子なし URL のホスト設定。Vercel が利用します。
customDomain カスタムドメイン。GitHub Pages では CNAME の生成に使います。
generateCi false CI を生成できる Adapter で使います。

Cloudflare Pages

pnpm add -D @natsuneko-laboratory/makit-adapter-cloudflare-pages
import cloudflarePages from "@natsuneko-laboratory/makit-adapter-cloudflare-pages";

export default defineConfig({
  title: "My Documentation",
  deployment: {
    adapter: cloudflarePages({
      projectName: "my-docs",
      generateWranglerConfig: true,
      redirects: { mode: "native" },
      headers: { enabled: true },
    }),
  },
});
オプション 既定値 説明
projectName 生成する wrangler.jsoncname
generateWranglerConfig false プロジェクト直下に wrangler.jsonc を生成します。出力先は pages_build_output_dir に設定されます。
redirects.mode "native" native は出力先の _redirectshtml は各 URL の HTML リダイレクトを生成します。
headers.enabled true headers を出力先の _headers として生成します。

Cloudflare Pages はネイティブなリダイレクトとカスタムヘッダーに対応します。

GitHub Pages

pnpm add -D @natsuneko-laboratory/makit-adapter-github-pages
import githubPages from "@natsuneko-laboratory/makit-adapter-github-pages";

export default defineConfig({
  title: "My Documentation",
  deployment: {
    adapter: githubPages({
      repository: "owner/docs",
      siteType: "project",
      basePath: "auto",
      generateWorkflow: true,
      branch: "main",
    }),
  },
});
オプション 既定値 説明
repository owner/repository"auto"GITHUB_REPOSITORY または Git の origin から解決します。
siteType "project" projecthttps://owner.github.io/repository/user / organization はルート公開です。
basePath URL の接頭辞。"auto" では project site のリポジトリ名を使います。
customDomain 独自ドメイン。出力先に CNAME を生成し、basePath は空でなければなりません。
generateWorkflow deployment.generateCi GitHub Actions のワークフローを生成します。
workflowPath .github/workflows/deploy-makit.yml 生成するワークフローの場所。
branch "main" ワークフローを実行するブランチ。

.nojekyll と HTML リダイレクトを出力します。GitHub Pages はカスタムレスポンスヘッダーをサポートしないため、headers は警告になります。条件付きリダイレクトも無条件 HTML リダイレクトへ変換されます。

Netlify

pnpm add -D @natsuneko-laboratory/makit-adapter-netlify
import netlify from "@natsuneko-laboratory/makit-adapter-netlify";

export default defineConfig({
  title: "My Documentation",
  deployment: {
    configFile: { mode: "merge" },
    adapter: netlify({
      generateConfig: true,
      configPath: "netlify.toml",
      redirects: { format: "toml" },
      headers: { format: "toml" },
      i18nRouting: "native",
    }),
  },
});
オプション 既定値 説明
generateConfig true netlify.toml を生成します。
configPath "netlify.toml" 設定ファイルの場所。
redirects.format "toml" tomlnetlify.tomlfile は出力先の _redirects を使います。
headers.format "toml" tomlnetlify.tomlfile は出力先の _headers を使います。
i18nRouting "client" client は言語条件を出力せずブラウザ側に任せます。native は Netlify の言語条件付きリダイレクトを出力します。

configFile.mode: "merge" の場合、Adapter は既存の netlify.toml# makit:start / # makit:end の管理ブロックを作り、既存の独自設定を保持します。

Vercel

pnpm add -D @natsuneko-laboratory/makit-adapter-vercel
import vercel from "@natsuneko-laboratory/makit-adapter-vercel";

export default defineConfig({
  title: "My Documentation",
  build: { trailingSlash: true },
  deployment: {
    cleanUrls: true,
    adapter: vercel({
      generateConfig: true,
      configPath: "vercel.json",
      cleanUrls: true,
      trailingSlash: true,
    }),
  },
});
オプション 既定値 説明
generateConfig true vercel.json を生成します。
configPath "vercel.json" 設定ファイルの場所。
cleanUrls deployment.cleanUrls Vercel の cleanUrls を設定します。
trailingSlash build.trailingSlash Vercel の trailingSlash を設定し、Makit の URL 形式と揃えます。

リダイレクトとヘッダーは vercel.json に変換されます。301 は Vercel の恒久リダイレクト(308)、302 は一時リダイレクト(307)の意味で表されます。国コード条件は Vercel 設定で表現できないため警告されます。

Adapter を選ぶ目安

サービス リダイレクト ヘッダー CI の生成 注意点
Cloudflare Pages ネイティブまたは HTML 対応 必要なら wrangler.jsonc を生成。
GitHub Pages HTML 非対応 対応 project site では basePath: "auto" が便利。
Netlify ネイティブ、条件付き対応 対応 TOML または _redirects / _headers を選べます。
Vercel ネイティブ 対応 URL 形式を trailingSlash で揃えます。