Denoの直近の変更について
直近でDeno v2.4向けと思われる機能がいくつかマージされているため、紹介します。
--unstable-raw-imports
(DENO_UNSTABLE_RAW_IMPORTS
)がサポート
Import Attributesにおいてtype: "bytes"
及びtype: "text"
の指定がサポートされています (#29855)。それぞれ、指定したファイルを文字列もしくはバイト (Uint8Array
) 形式で読み込むために利用することができます:
import data from "./data.txt" with { type: "text" };
console.info(data); // => "foo"
この機能を有効化するためには、--unstable-raw-imports
の指定が必要です:
$ deno run --unstable-raw-imports main.js
Deno.execPath()
における--allow-read
の指定が不要化
Deno.execPath()
が--allow-read
を要求しないよう挙動が変更されています:
Deno.execPath()
が--allow-read=deno
の要求を促すことで、ユーザーが allowlist を指定せずに--allow-read
によってあらゆるファイルの読み込みを許可してしまうケースが多く、却ってセキュリティリスクを増してしまうとの判断からこの変更が実施されたようです。
deno update
コマンドが追加
deno update
コマンドが追加されています:
このコマンドの挙動は依存関係の更新のために利用することができます (実質的にdeno outdated --update
のエイリアスとして機能するようです)
deno fmt
- .svg
/.xml
/.mustache
のサポート
deno fmt
コマンドで.svg
/.xml
/.mustache
をサポートするPRがマージされています:
.mustache
ファイルのフォーマットについては--unstable-component
の指定が必要なようです。
Deno v2.3.7
Deno v2.3.7がリリースされています。
deno bundle
の改善
Deno v2.3.6で再実装されたdeno bundle
コマンドで--watch
オプションがサポートされています (#29795)。esbuild
のプロセスを再起動することなく再ビルドが実行されます。
それ以外にも以下の改善が実施されています:
--sourcemap
オプションが追加されています (#29735)--platform
オプションが追加されています (#29697)。browser
もしくはdeno
のいずれかを指定可能で、browser
を指定するとpackage.json
のexports
においてbrowser
で指定されたエントリーポイントが読み込まれます。--allow-import
がサポート (#29733)import.meta.main
のサポート (#29830)- デフォルトで
--unstable-sloppy-imports
が有効化されるように挙動が変更されています (#29731)
deno install -g
- @{scope}/cli
形式のパッケージの取り扱いが改善
@{scope}/cli
形式のパッケージに対してデフォルトでscope
が名前として扱われるよう改善されています (#29694)
具体的にはnpm:@slidev/cli
のようなパッケージをdeno install -g
でインストールすると、デフォルトでslidev
という名前で利用できます。
deno outdated
のバグ修正
依存パッケージの新しいバージョンにおいてexports
から削除されたエントリが存在する場合に、deno outdated
が失敗する問題が修正されています (#29713)
--cert
- Base64形式のサポート
base64:
プレフィックスを指定 (--cert=base64:<base64-encoded-cert>
)することで、Base64形式のルート証明書を読み込めるよう改善されています (#29814)
node:crypto
Certificate
が実装されています (#29828)
また、publicEncrypt()
及びprivateDecrypt()
でKeyObject
がサポートされています (#29798)
node:fs
fchmod()
とfchmodSync()
が実装されています (#29791)
node:worker_threads
Deno v2.3.6におけるWorkerGlobalScope
に続いて、node:worker_threads
のWorker
からはself
を参照できないよう修正されています (#29734)
Node-API
napi_add_finalizer()
で登録したfinalize_cb
が呼び出されることを保証するよう改善が実施されています (#29710)
import.meta.resolve()
import.meta.resolve()
でnpmやjsrパッケージ中の存在しないファイルに対する解決がサポートされています (#29831, #29741)
LogTape 1.0.0
LogTape 1.0.0がリリースされています:
ログのバッファリングを有効化するためのnonBlocking
オプションの追加やCloudWatch Logsのサポート (@logtape/cloudwatch-logs),ローカル開発向けの@logtape/prettyパッケージの追加などが実施されているようです。
また、既存のロガーとの統合を容易にするために@logtape/adaptor-pinoや@logtape/adaptor-winstonパッケージが追加されています。