generated at
Fresh v2
はじめに
fresh v2向けに開発されていたコードがfresh main ブランチにマージされています (major: import Fresh 2.0 code (#2449)) (2024/05/25)
そろそろfresh v2がリリースされる可能性がありそうなため、現時点で判明している変更点などについてまとめていきます

変更について
jsrへの対応
jsrfresh関連のパッケージが公開されています (@fresh)
jsrパッケージに含まれるIslandコンポーネントのサポートも入っているようです (fix: error bundling JSR islands (#2552))
@fresh/examplesというパッケージが公開されています (feat: add @fresh/examples package (#2555))

preact/esbuildなどの読み込み
今まではpreactなどの読み込みにesm.shが活用されていました
fresh v2からはnpmレジストリから読み込む形に変更されそうです
jsrへの公開に合わせた対応と思われます
この変更により、deno.lockも利用できるようになりそうです
また、これによりNode.jsなどからも利用できる余地は高まりそうな気はしています

ExpressライクなAPIの採用
プラグインシステムなどでより柔軟にroutesやミドルウェアなどの追加が行えるようになりそうです
typescript
import { App, fsRoutes, trailingSlashes } from "@fresh/core"; const app = new App({ root: import.meta.url }) // ミドルウェアの設定 .use(trailingSlashes("never")); // ルーティングの設定 await fsRoutes(app, { loadIsland: (path) => import(`./islands/${path}`), loadRoute: (path) => import(`./routes/${path}`), }); export { app };

これらはFreshの設定ファイルでしたが、Fresh v2では削除されています

createDefine() API
ページコンポーネントやHandlerなどの定義を簡素化するためのユーティリティ
例)
www/utils/state.ts - createDefine() を使用している箇所
www/routes/showcase.tsx - createDefine() により返却された Define APIを活用して、ハンドラーやページコンポーネントを定義しています
hr

エラーページ
routes/_404.tsx routes/_500.tsx などが routes/_error.tsx に統合されているようです

freshの初期化スクリプトでprecompiled JSX transformを有効化する対応が入っています (feat: init projects with jsx precompile (#2506))

esbuild関連
process.env.NODE_ENV が定義されるように (feat: inject process.env.NODE_ENV for third party libs (#2481))
サードパーティライブラリとの相互運用性の改善が目的

Twindプラグインの削除
Fresh v1では公式でTwindのプラグインが提供されていました
Fresh v2ではTwindプラグインは削除されています
Tailwind CSSプラグインは引き続き提供されています

Deno v2への対応

OpenTelemetryサポート
Deno v2.1で実験的に導入されたOpenTelemetryサポートをベースに計装が進められているようです (feat: add open telemetry instrumentation (#2786))

履歴
The road to Fresh 2.0 #2363が公開 (2024/03/15)
jsrにパッケージが公開 (@fresh)
v2のアルファバージョンが公開 (https://jsr.io/@fresh/core@2.0.0-alpha.11)

マイグレーション
マイグレーションガイド

fresh公式での対応
2. www: add back trailing slash handling (#2467) - 末尾の / の取り扱いの変更についての対応

jsr.ioにおけるv1からv2への移行