Denoの直近の変更について

直近でDeno 2.9向けと思われるPRがいくつかマージされているため紹介します。

deno desktopコマンド

以前に紹介したdeno desktopを実装するPRがmainブランチにマージされています:

以下のいずれかのバックエンドを切り替えることができるようです:

rawバックエンドはユーザーがWebベースのエンジン (cef / webview) を使わずに独自にレンダリングをカスタマイズしたい場合に使うことが想定されているようです。

また--hmrオプションによるHMRのサポート、Deno.serve()との統合、bindings[name]()によるDenoランタイムからバックエンドへの関数の公開、alert()/confirm()などによるネイティブポップアップの表示、NotificationAPIによる通知、Deno.BrowserWindow/Deno.Tray/Deno.dock/Deno.MenuItem/Deno.autoUpdate()などのAPI、フレームワークの自動検出などがサポートされているようです。

公式ドキュメントもすでに公開されており、Deno 2.9にてリリースされる予定のようです:

package-lock.json/pnpm-lock.yaml/yarn.lock (Yarn v1)/bun.lockからdeno.lockへの移行がサポート

deno.lockが存在しない状態でのdeno installコマンドの実行時に、package-lock.json/pnpm-lock.yaml/yarn.lock (Yarn v1)/bun.lockのいずれかが検出されたら、それらの内容からdeno.lockを自動生成してくれる機能が実装されています:

CSS ファイルのimport (with { type: "css" })

.cssファイルのimportに関する実験的サポートが追加されています:

with { type: "css" }を指定することで、.cssファイルをCSSStyleSheetオブジェクトとして読み込むことができます:

import stylesheet from "./styles.css" with { type: "css" };

console.assert(stylesheet instanceof CSSStyleSheet);

本機能を利用するためには--unstable-raw-importsの指定が必要です。

スナップショットテスティング

スナップショットテスティングがサポートされています:

Deno.TestContext#assertSnapshot()というAPIが追加されており、デフォルトでは__snapshots__/*.ts.snap@std/testing/snapshotと同様のフォーマットでスナップショットが保存され、deno testコマンドの--update-snapshotsオプションによってスナップショットを更新できるようです。