Cloudflare workersに静的なHTMLをデプロイする時は、.assetsignoreを使う
Cloudflare Workersに静的HTMLをデプロイする際、`.git`ディレクトリが含まれてエラーになる問題。解決策は`.assetsignore`ファイルを作成して除外設定を行うだけ。シンプルだけど見落としがちなポイントです。
目次
メンテする予定のないサイトは、サーバー側の処理を含まない純粋な純粋なHTML / CSS / JSファイルだけで構成された静的サイトにしたい。そして低コストかつ手軽に管理できる場所にリソースを集約したい。
ということで、WordPressサイトを静的化した上で、Cloudflare Workersへデプロイすることを試してみました。今回は少しハマりどころがありましたので、簡単に紹介します。
デプロイしたいサイトの例
今回デプロイを試みたサイトは、完全な静的サイトです。Next.jsやHonoXなども使わず、純粋なHTML / CSS / JSファイルだけを管理している状態を想定しています。
.
├── about
├── ads.txt
├── app-ads.txt
├── index.html
├── blog
├── category
...
Workers Static Assetsでデプロイを試みる
これをCloudflare WorkersでWrangler経由のデプロイにする場合、Static Assetsとしてデプロイするので、このような設定を行います。
{
"name": "example.com",
"compatibility_date": "2025-10-07",
"assets": {
"directory": "./"
}
}
しかし実はこの設定だけでは、デプロイがFailします。
ルートディレクトリのデプロイは、Gitがデプロイに混ざる
これは実際に試みたときのデプロイログです。Git ディレクトリにあるファイルをアップロードしようとして、ファイルサイズ制限に引っかかっていることがわかります。
21:39:02.110 Executing user deploy command: npx wrangler deploy
<中略>
21:39:49.157 ✘ [ERROR] Asset too large.
21:39:49.157
21:39:49.157 Cloudflare Workers supports assets with sizes of up to 25 MiB. We found a file /opt/buildhome/repo/.git/objects/pack/pack-548dc17900ff8749d800a3e41105ee7724aa07e7.pack with a size of 1.4 GiB.
21:39:49.157 Ensure all assets in your assets directory "/opt/buildhome/repo" conform with the Workers maximum size requirement.
21:39:49.157
assets.directory
を/
にすることは通常あまりないのですが、仮に設定すると、このように.git
がデプロイ対象になってしまいます。
デプロイ除外を設定する
対策はとてもシンプルで、除外ファイルを追加するだけです。Cloudflare WorkersのStaic Assetsの場合除外設定は.assetsignore
を利用します。ここに、Gitなどの除外ファイルやディレクトリを指定してください。
.git/
node_modules/
ちなみに生成AIはwrangler.jsonc
でassets.exclude
という値を提案してきます。しかし調べてもそんなパラメータ、そんなものは2025/10時点でありませんでしたので注意してください。