@hakoniwajs/cloudflare

中文文档
0.1.6发布于 2026/11/01SEE LICENSE IN LICENSETypeScriptES Module构建来源已验证

箱庭諸島2 (TypeScript 版) の Cloudflare Workers アダプタ。Durable Objects (SQLite) 版の Worker エントリと DO クラスを提供する

原始使用文档
文档目录3 节
  1. 使い方
  2. API
  3. License

@hakoniwajs/cloudflare

箱庭諸島2 (TypeScript 版) の Cloudflare Workers Adapter です。Durable Objects (SQLite) 版の Worker エントリと DO クラスを提供します。

テンプレートリポジトリ hakoniwajs/template-cloudflare を使うのが一番簡単です (Deploy to Cloudflare ボタン対応)。

使い方

$ npm install @hakoniwajs/cloudflare

src/worker.ts:

import { createWorker } from "@hakoniwajs/cloudflare";

// wrangler.jsonc の durable_objects.class_name で HakoniwaGame を、exports で CachedPages を
// 解決するため、このファイルから再エクスポートする必要がある
export { CachedPages, HakoniwaGame } from "@hakoniwajs/cloudflare";

export default createWorker();

wrangler.jsonc の最小構成 (完全な設定例はテンプレートを参照):

{
  "name": "hakoniwa",
  "main": "src/worker.ts",
  "compatibility_date": "2026-08-22",
  "compatibility_flags": ["nodejs_compat"],
  "assets": { "directory": "./node_modules/@hakoniwajs/core/public" },
  // Workers Cache。Gateway (default) は無効にし、CachedPages だけ有効にする (wrangler 4.107.0 以降)
  "cache": { "enabled": true },
  "exports": {
    "default": { "type": "worker", "cache": { "enabled": false } },
    "CachedPages": { "type": "worker", "cache": { "enabled": true } },
  },
  "durable_objects": {
    "bindings": [{ "name": "GAME", "class_name": "HakoniwaGame" }],
  },
  "migrations": [{ "tag": "v1", "new_sqlite_classes": ["HakoniwaGame"] }],
  "triggers": { "crons": ["*/15 * * * *"] },
  "vars": { "HAKONIWA_DEV_LOGIN": "false" },
}

Workers Cache (cache.enabled: true) を有効にすると静的アセットへのリクエストも Workers のリクエストとして課金対象になります。

必須の secret はありません。HAKONIWA_AUTH_SECRET は未設定なら初回起動時に自動生成して Durable Object に保存します。管理者は、デプロイ後にログインして /admin/setup を開き、Workers のログに出力されるセットアップコードを入力すると登録できます (HAKONIWA_ADMIN_EMAILS で指定しておくこともできます)。X / Discord ログインや Resend などの秘密情報を使う場合は wrangler secret put <NAME> で登録してください。設定項目の一覧は 環境変数一覧 を参照してください。

API

  • createWorker(options?) — fetch/scheduled を持つ Worker オブジェクト (Gateway) を返します。options.doBinding で DO バインディング名を GAME 以外に変更できます。
  • HakoniwaGame — Durable Object クラス (上記の通り再エクスポート必須)。
  • CachedPages — Workers Cache を有効にする内側のエントリポイント (上記の通り再エクスポート必須)。Gateway が ctx.exports 経由で呼び、キャッシュしてよい応答だけをここで DO から取得します。サイト設定の変更などのときは、DO が RPC (purgeEverything) でこのエントリポイントのキャッシュを消します。再エクスポートしていない場合は、キャッシュを使わずに DO へ直接転送します。
  • createCachedPages(options?) — doBinding などを変えた場合に使います。createWorker と同じオプションを渡し、export const CachedPages = createCachedPages({ doBinding: "..." }) のように export してください。

License

オリジナルの利用条件に従います (LICENSE)。同梱画像の商用利用はできません。

版本与发布记录

@hakoniwajs/cloudflare 共发布 7 个版本,首次发布于 2026/09/26;过去 12 个月发布了 7 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.6latest2026/11/012 天前
0.1.52026/10/2410 天前
0.1.42026/09/271 个月前
0.1.32026/09/271 个月前
0.1.22026/09/261 个月前
0.1.12026/09/261 个月前

关于 @hakoniwajs/cloudflare 的常见问题

@hakoniwajs/cloudflare 是什么?

Cloudflare Workers (Cloudflare Workers)持久对象(SQLite)版の工人エントリと做クラスを提供する

如何安装 @hakoniwajs/cloudflare?

在项目目录运行 npm install @hakoniwajs/cloudflare,或使用 pnpm add / yarn add / bun add。

@hakoniwajs/cloudflare 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@hakoniwajs/cloudflare 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@hakoniwajs/cloudflare 可以商用吗?

@hakoniwajs/cloudflare 使用 SEE LICENSE IN LICENSE 许可。许可条款写在包内的独立文件中,请阅读该文件确认可否商用。以上为概括,不构成法律意见,请以许可原文为准。

@hakoniwajs/cloudflare 还在维护吗?

最新版本 0.1.6 发布于 2026/11/01(2 天前);至今共发布 7 个版本,其中过去 12 个月发布了 7 个;首次发布于 2026/09/26。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。