Denoの直近のアップデート
typescript-goのサポートがマージ (--unstable-tsgo)
以前に紹介した、deno checkコマンドでtypescript-goをサポートするPRがマージされています (#30920)。まだリリースはされていませんが、canary バージョンで動作を試すことが可能です。
deno checkを実行する際に--unstable-tsgoオプションを指定することで、まずdenoland/typescript-goが${DENO_DIR}/dlへダウンロードされます。
その後、--apiオプションを指定して起動されたtsgoとプロセス間で通信することによって型チェックが実行されているようです (microsoft/typescript-go/cmd/tsgo/main.go#L19-L20)
$ deno check --unstable-tsgo mod.ts
詳細はdenoland/deno/docs/tsgo.mdにて解説されています。
deno.jsonでのminimumDependencyAgeのサポート
先週に紹介した、deno.jsonでのminimumDependencyAgeのサポートがマージされています (#31007)
さらに、特定のパッケージを対象から除外できるよう、minimumDependencyAgeにおいてオブジェクト形式での設定がサポートされています:
minimumDependencyAge.ageフィールドに猶予期間、minimumDependencyAge.excludeフィールドに適用対象から除外したいパッケージを指定できます。
{
"minimumDependencyAge": {
"age": "PT5H",
"exclude": ["npm:preact"]
}
}
deno auditコマンド
以前に紹介した、deno auditコマンドの実装がマージされています。
npmレジストリの Full Audit エンドポイント (/-/npm/v1/security/audits) を利用したパッケージの検査がサポートされています。
内部的には firewall-api.socket.dev を使用した検証の実装も含まれているようですが、現時点ではまだユーザーから利用するための手段は提供されていなさそうです。
ecosystem_compat_test
内部的な変更ではありますが、日次でnpm/ yarn/pnpmをDenoで実行し、互換性を検証する仕組みが導入されています:
- ci: add workflow to run package managers under deno #31070
- ci: adjustments to the ecosystem compat tests #31076
テスト用のリポジトリとしてはlucacasonato/nextjs-demoのリポジトリが使用されており、Next.jsやTailwind CSSのインストールが検証されています。
Deno Deployのアップデート
データベースマイグレーションのサポート
Databasesにおいて、各ビルドの成功後に実行するマイグレーションコマンドの指定がサポートされています:
上記PRではnode-pg-migrateやprisma migrate deployとの連携例が追加されています。
dependencies/devDependenciesのサポートについて
まだDraft状態でありマージされるかどうかはわかりませんが、Denoへのdependencies/devDependenciesサポートに関するPRが作成されています:
1d2e6e7b524da176eca452496b59a817b48f9eab時点においては、deno.jsonにdependencies/devDependenciesフィールドが追加される想定のようです。importsフィールドとの違いとして、以下のようにバージョンレンジにおけるパッケージ名を省略できる想定のようです:
{
"dependencies": {
"preact": "npm:^10",
"@fresh/core": "jsr:^2"
}
}
この機能が検討されている背景としては、以下のような点などが挙げられています:
deno auditの導入に伴い、本番向けと開発向けのパッケージを区別できるようにしたいdeno compileで実行可能ファイルを生成する際は、開発向けのパッケージは除外したい
まだ正式にこの機能が導入されるかどうかはわかりませんが、このPR内においては、Denoにdependencies/devDependenciesのサポートを追加する代わりに、Import maps 標準へ機能を追加すること (conditionsフィールドの追加)も提案されています。
freshのリリース
freshのリリースが行われています (2.1.3)
@fresh/init@2.2.1
@fresh/init@2.2.1がリリースされています。
プロジェクトのセットアップ時に@/のパスエイリアスが設定されるよう改善されています (#3562)。今後、新しく生成されたプロジェクトでは以下のようなパスで各モジュールを参照できます。
import { Button } from "@/components/Button.tsx";
import { define } from "@/utils.ts";
@fresh/core@2.1.3
@fresh/core@2.1.3がリリースされています。以下のバグ修正が実施されています。
App#fsRoutes()のpattern引数が機能していなかった問題が修正されています (#3571)- 開発時に意図せぬファイルが返却されることを防止するため、開発環境では
staticFiles()におけるETagが無効化されています (#3561) HEADメソッドの取り扱いに関して、以下の修正が実施されています (#3563)- リクエストボディが返却されないようにする
HEADメソッド向けにハンドラーが登録されていない場合は代わりにGETメソッドのハンドラーを実行する
@fresh/plugin-vite@1.0.6
@fresh/plugin-vite@1.0.6がリリースされています。
routesディレクトリ中のテストファイルがデフォルトでバンドルされてしまわないよう修正されています (#3559)