Denoの直近の変更について
直近でDeno 2.9向けと思われるPRがいくつかマージされているため紹介します。
deno desktopコマンド
以前に紹介したdeno desktopを実装するPRがmainブランチにマージされています:
以下のいずれかのバックエンドを切り替えることができるようです:
- cef (Chromium Embedded Framework)
- webview
- raw
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を自動生成してくれる機能が実装されています:
- feat(install): seed deno.lock from package-lock.json #35330
- feat(install): seed deno.lock from pnpm-lock.yaml #35346
- feat(install): seed deno.lock from yarn.lock #35350
- feat(install): seed deno.lock from bun.lock #35394
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オプションによってスナップショットを更新できるようです。