Deno v2.0.3
Deno v2.0.3がリリースされました。
deno lsp
Interactive Inlay Hints for Types
Interactive Inlay Hints for Typesが実装されています。Inlay Hintsの内容をクリックすることで、その定義元へジャンプできるようです。
import-map-remap quickfix
type imports (import type)に対してもimport-map-remap quickfixが利用できるよう改善されています。
deno compile
Node-APIのサポート
deno compileで生成されたバイナリでNode-APIがサポートされています。
deno check
--frozenのサポート
deno checkコマンドで--frozenオプションの指定がサポートされています。
deno fmt
--extの挙動の変更
deno fmtに--extオプションを指定した際に、引数でのファイルの指定が必須に変更されています。
HTMLファイルに対するdeno-fmt-ignore-*のサポート
HTMLファイルに対してdeno fmtコマンドを実行する際にdeno-fmt-ignore-*コメントが動作していなかった問題が修正されています。
deno add/deno install
deno.jsonの更新時の振る舞いの改善
deno addやdeno removeなどのコマンドでdeno.json(c)やpackage.jsonが更新される際に、元のインデントやコメントなどを維持してくれるよう振る舞いが改善されています。
引数なしでdeno installを実行した際の振る舞いの変更
引数なしでdeno installを実行した際に、JSRパッケージのexportsで定義されたすべてのファイルがダウンロードされるように挙動が変更されています。(今までは依存されているファイルのみがダウンロードされていました)
型定義ファイルのみを含むファイルの取り扱いが改善
deno installでJSRパッケージをダウンロードする際に、型定義だけを含むファイルがダウンロードされない問題が修正されています。
package.jsonに対するdeno.lockサポートの改善
プロジェクトにpackage.jsonだけが存在するときにdeno addなどのコマンドを実行した際もdeno.lockが更新されるように改善されています。
.npmrcサポート
deno installとdeno addに.npmrcの設定が適用されない問題が修正されています。
Node.js互換性の改善
Next.jsやPlaywright, Vitestのサポートの改善などが実施されています。
(Windows) スレッドプールサイズの増加
Windowsでnext buildを実行すると、利用可能なCPUコア数によってはプロセスがハングしてしまう問題を解消するため、Denoの内部で利用されているスレッドプールのサイズが調整されています。
サードパーティーレジストリの取り扱いの改善
AWS CodeArtifactなどのサードパーティーレジストリのサポートのため、npmレジストリからscoped packageを要求する際にURLが適切にエンコードされるよう挙動が改善されています。
node:child_process
VitestやPlaywrightサポートの改善に向けて、IPCの使用時に意図せずWouldBlockやBrokenPipeエラーが起きることのある問題が修正されています。
node:fs
readlink()のエラーハンドリングが改善され、ERROR_NOT_A_REPARSE_POINTの発生時にEINVALが返されるように修正されています。Windowsでnext buildが失敗する問題を解消することが目的のようです (#26179)
また、WindowsにおいてERROR_INVALID_NAMEがEINVALではなくENOENTへマッピングされるよう修正されています (#26475)
node:util
styleTextのformat引数で配列がサポートされました。
node:tls
connect()から返却されたTLSSocketに対してalpnProtocolプロパティが設定されるように改善されています。
FFI
u64/i64の取り扱いの変更
u64/i64型がNumberではなくbigintとして返却されるように挙動が変更されています。
Deno v2.1向けの変更について
まだマージはされていませんが、直近でDeno v2.1向けと思われる機能の開発が進められているため、いくつか紹介します。(⚠️ここで紹介している機能についてはまだマージはされていないため、今後、使い方などに変更が発生する可能性もあります)
deno task - タスクの依存関係の定義について
まだDraft状態ですが、deno taskで各タスク間の依存関係を定義できるようにする対応が進められているようです:
- feat(task): dependencies (WIP) (denoland/deno#26467)
- feat(task): dependencies (denoland/deno_config#129)
現状ではwireitを参考に、各タスク間の依存関係を定義できるようにする想定のようです:
{
"tasks": {
"check": {
"command": "deno check mod.ts",
"dependencies": ["lint:fmt", "lint:dlint"]
},
"lint:fmt": "deno fmt --check",
"lint:dlint": "deno lint"
}
}
deno compileでのV8コードキャッシュのサポート
deno compileにV8コードキャッシュのサポートを追加するPRが作成されています:
deno compileで作成された実行可能ファイルの初回実行時に/tmpへコードキャッシュを保存し、その実行可能ファイルの2回目以降の実行時に読み込むことで、バイナリーの起動速度の高速化が図られるようです。
もしこのコードキャッシュの生成と読み込みを無効化したい場合、deno compileに--no-code-cacheを指定する必要があるようです。
複数の.envファイルのサポート
--env-fileで複数の.envファイルを読み込めるようにする対応が進められています:
各.envファイル間で環境変数の衝突が見つかった場合、後で指定されたファイルの値が優先される想定のようです。
$ deno run --env-file=".env.default" --env-file=".env.development" main.ts
@deno/nextjs-start
@deno/nextjs-startというJSRパッケージが公開されています:
- パッケージ: @deno/nextjs-start
- リポジトリ: arnauorriols/deno-next-start
- デモ: Deploy a Next.js app to Deno Deploy - YouTube
内部的にはnext/dist/cli/next-start.jsが利用されているようで、このパッケージをDeno Deployのエントリポイントとして指定することで、next startを実行した際と同様にDeno Deploy上でNext.jsの本番サーバーを起動できるようです。
deno_stdのリリース
deno_stdがリリースされています。
@std/async@1.0.7
@std/async@1.0.7がリリースされています。
@std/async/unstable-throttle
新規APIとしてthrottleが実装されています。基本的にlodashのthrottle()と同様の機能を提供してくれるようです。
@std/collections@1.0.9
@std/collections@1.0.9がリリースされています。
@std/collections/unstable-sliding-windows
slidingWindowsにIterableのサポートが追加されています。
@std/expect@1.0.6
@std/expect@1.0.6がリリースされています。
expect.objectContainingが実装されています。
@std/text@1.0.8
@std/text@1.0.8がリリースされています。
@std/text/unstable-slugify
slugifyにoptions引数(SlugifyOptions)が追加されています。transliterateオプションが提供されており、any-asciiなどのパッケージとの併用が想定されているようです。