crofty 0.20.0 — Functions のあるサイトもデプロイできます
問い合わせフォームひとつのために、サイト全体を別のツールでデプロイしていた方へ。
crofty は _worker.js を持つサイトのデプロイを止めていましたが、0.20.0 からは
静的ファイルと同じデプロイに載せます。
変更前
$ crofty deploy
✗ this project has Pages Functions (_worker.js) — not deploying:
crofty deploys static files only. Publishing would replace what is serving
those routes now, so anything they answer — forms, redirects, APIs — stops
working, silently.
Deploy this site the way its Functions get deployed (wrangler / a Pages git
build), or run 'crofty deploy --static-only' to drop them on purpose.
Nothing was deployed.
止めていたのは、静的ファイルだけを上げると、いま応答しているルートが黙って死ぬからでした。 ただ結果として、フォームを1つ持っただけのサイトを、crofty の外でデプロイすることに なっていました。
変更後
crofty deploy がそのまま通ります。プロジェクト直下の _worker.js は、静的ファイルと
一緒に Pages のデプロイへ載ります。隣に _routes.json があれば、それも一緒です。
crofty が扱うのは、それ単体で完結している _worker.js だけです。import や require で
他のファイルを読む書き方は、1つにまとめる処理が要るので対象外です。デプロイ先が
SFTP / FTPS のときも、リクエストに答えるものは置けないので、これまでどおり止まります。
いま自分のプロジェクトに何があるかは、デプロイを実行しなくても確認できます。
$ crofty config --json
{
…
"pagesFunctions": [
"_worker.js"
]
}
ランタイムと環境変数は、書いた人が宣言します
_worker.js が動くには、どのランタイムで動かすかと、どの環境変数が要るかが決まっている
必要があります。crofty はどちらも勝手に決めません。.crofty/config.json に書きます。
| 書く場所 | 何を書くか | 書かないとどうなるか |
|---|---|---|
deploy.worker.compatibilityDate |
2026-07-20 のような日付 |
Pages プロジェクトの設定、それも無ければ一番古いランタイムで動きます。警告が出ます |
deploy.worker.requiredEnv |
変数の名前だけ | 何も突き合わせません |
compatibilityDate に crofty の既定値を入れていないのは、それをやると crofty を
アップデートしただけで _worker.js の動くランタイムが変わってしまうからです。
日付の形が違うときは、ビルドもログインも始まる前に止まります。
$ crofty deploy
crofty: deploy.worker.compatibilityDate is "2026-7-20" — it has to be a date like 2026-07-20
requiredEnv に書くのは名前だけです。crofty は Pages プロジェクト側にある名前と突き合わせて、
足りないものを警告してからデプロイを続けます。crofty が値を読むことも、送ることもありません。
NAME=value の形で書くと、値の部分を捨てるのではなく、エラーにします。コミットするファイルに
秘密が書かれてしまったあとで気づいても遅いからです。
足りなくても止めないのは、その変数を消したのが crofty ではありませんし、デプロイしてから 設定する以外に打つ手も無いからです。
このリリースのそのほか
_routes.jsonが無いと警告します。 無い場合、静的ファイルも含めた全リクエストが_worker.jsを通り、そのぶん課金されます。crofty が勝手に作ることはしないので、 答えてほしいルートを書いたものを置いてください。functions/という名前のコンテンツを、Functions のソースと取り違えなくなりました。 記事のセクション名がたまたまfunctionsだった場合、以前はサーバー側のソースとして 読まれて公開から外れていました。いまはページとして公開され、そのことをデプロイ中に伝えます。- 更新の通知が、何が変わったかを出します。 これまでは新しいバージョンがあることだけを 伝えていました。いまはリリースノートの URL が付くので、アップデートするかどうかを 決められます。
.pkgで入れた場合、案内先が.pkgになりました。 ターミナルを開かずに入れた人にcurl | sudo shを案内していました。インストールした経路に合わせた案内に変わっています。
入れ方
crofty.pkg または crofty-setup.exe を落として、ダブルクリックします。OS は一度だけ警告します ── インストーラは未署名です。 始める に手順があります。
ターミナルから:
curl -fsSL https://crofty.site/install.sh | sh # macOS / Linux
irm https://github.com/ShiroDoromoto/crofty/releases/latest/download/install.ps1 | iex # Windows