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
などのパッケージとの併用が想定されているようです。