Deno v2.8
はじめに Deno v2.8がリリースされました。 この記事では主な変更点などについて紹介します。 グローバルAPIに関する破壊的変更 タイマーAPI globalThis.setTimeout()やglobalThis.setInterval()などのタイマーAPIにおいて、Web標準ではなくNode.jsベースの実装が使用されるように変更されています (#33249) これにより、これらのAPIからはnumber型ではなくnode:timersモジュールのTimeoutやImmediateなどのオブジェクトが返却されます。 また、この変更に伴い、TypeScriptで自動的にlib: ["node"]が設定されるように変更されています (#33823) URLSearchParams globalThis.URLSearchParamsがNode.js互換となるように修正されています (#34119) 軽微ですが、コンストラクター引数としてnullやundefinedを渡した際の振る舞いが若干異なるようです。 deno add/deno install npm:プレフィックスの指定の省略がサポート deno addの引数に指定したパッケージでnpm:及びjsr:が省略された場合、デフォルトでnpm:が指定されたものとみなすよう挙動が変更されています (#33246, #34290) # 下記は`deno add npm:zod`と同様に振る舞います $ deno add zod --prod/--skip-types deno installコマンドに--prod/--skip-typesオプションが追加されています (#33248) --prodオプションを指定すると、package.jsonのdevDependenciesに指定されたパッケージのインストールがスキップされます。 --skip-typesオプションは--prodとの併用が想定されており、指定されるとpackage.json及びdeno.jsonで指定された@types/*パッケージのインストールがスキップされます。 --package-json deno add/deno install/deno remove/deno uninstallコマンドに--package-jsonオプションが追加されています (#33199) package.jsonとdeno.jsonが併用されたプロジェクトにおいてこれらのコマンドを実行するとデフォルトではdeno.jsonが更新されます。--package-jsonオプションを指定することで、更新対象のファイルをdeno.jsonからpackage.jsonに変更できます。 --os/--arch --os及び--archオプションが追加されています (#32785) Denoはデフォルトで現在のプラットフォームに基づいてnpmパッケージのoptionalDependenciesにおける適切なプラットフォーム向けの依存関係のみをダウンロードしますが、--os及び--archを使用することでこの挙動を変更し、指定されたOS/アーキテクチャー向けの依存関係のダウンロードを行わせることが可能です。 --archと既存のDENO_INSTALL_ARCH環境変数を併用した場合、--archが優先されます。 deno test OpsサニタイザーとResourcesサニタイザーがデフォルトで無効化 OpsサニタイザーとResourcesサニタイザーをデフォルトで無効化する変更が実施されています (#33250) これらを有効化するために、下記いずれかの手段が提供されています。 1. Deno.test Deno.test()の下記オプションをtrueに設定することで、該当テストケースでサニタイザーを有効化できます: sanitizeOps sanitizeResources また、テストファイル内でDeno.test.sanitizer()を実行することで、該当のテストファイル内のすべてのテストケースでサニタイザーを有効化できます。 Deno.test.sanitizer({ ops: true, resources: true, }); Deno....