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 だけです。importrequire で 他のファイルを読む書き方は、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 ではありませんし、デプロイしてから 設定する以外に打つ手も無いからです。

このリリースのそのほか

入れ方

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