Deno v2.2.5
Deno v2.2.5がリリースされています。
npmパッケージに対するパッチが実験的にサポート
⚠️Deno v2.3がリリースされるまでは、この機能の利用には"unstable": ["npm-patch"]
の指定が必要なようです。今後、破壊的変更が加わる可能性もありそうです。
deno.json
のpatch
フィールドによるnpmパッケージへのパッチがサポートされています (#28512)
この機能を利用するためにはnode_modules
が必要なため"nodeModulesDir": "manual"
や"nodeModulesDir": "auto"
などとの併用が必要なようです。
使い方はjsrパッケージにおけるパッチと同様で、patch
フィールドにpackage.json
を持つディレクトリへのパスを指定することで、該当のpackage.json
の"name"
フィールドの値に一致するパッケージがpatch
フィールドで指定されたディレクトリの内容へ置き換えられます:
{
"nodeModulesDir": "auto",
"patch": ["./path/to/patched-npm-package"],
"unstable": ["npm-patch"]
}
このnpmパッケージのパッチ機能はnodeModulesDir
の設定値によって振る舞いが若干変わるようです:
nodeModulesDir | 振る舞い |
---|---|
"manual" | パッチの内容を変更するたびにdeno install の実行が要求されるようです |
"auto" | スクリプト実行のたびにnode_modules が作り直されるため、起動時間が少し伸びるようです |
OpenTelemetry
Span Eventsのサポート
Span Eventsの基本的なサポートが実施されています (#28552)
これによって、Span#addEvent
が利用できるようです。
意図せぬTypeError
の修正
OpenTelemetryサポートを利用する際にTypeError
が発生することがある問題が修正されています (#28538)
Node.js互換性の改善
node:sqlite
Denoのパーミッションシステムとの兼ね合いを考慮して、ATTACH DATABASE
の使用が無効化されました (#28513)
また、StatementSync#run
から返却されるchanges
フィールドに誤った値が設定される問題が修正されています (#28506)
node:util
getCallSites()
が実装されています (#28546)
その他
Deno本体のV8が135へアップデートされています (#28562)
また、Error.stackTraceLimit
の型定義が追加されています (#28539)
静的解析可能なdynamic importに対する遅延読み込みのサポートについて (--unstable-lazy-dynamic-imports
)
⚠️まだマージされていない機能であるため、今後、使い方などが変わる可能性があります。
Deno本体に静的に解析可能なdynamic import (import()
)の遅延読み込みをサポートするPRが作成されています:
例えば、以下のようなコードを実行する際に、通常であれば、まずはjsr:@std/fs
がダウンロードされてから"foo"
と"bar"
が順番に出力されます:
console.info("foo");
const fs = await import("jsr:@std/fs");
console.info("bar");
この機能が有効化された場合、まず"foo"
が出力された後にjsr:@std/fs
のダウンロードと読み込みが行われ、その後に"bar"
が出力されるよう挙動が変わるようです。
この機能を利用すると依存関係の解決順序が変わる関係で、通常時とは依存解決の振る舞いが若干変わる可能性があるようです。
この機能の利用には、--unstable-lazy-dynamic-imports
またはdeno.json
において"unstable": ["unstable-lazy-dynamic-imports"]
の指定が必要なようです。