直近のDenoのアップデート まだリリースは行われていませんが、直近でいくつかの機能が追加されてますため紹介いたします。 ⚠️ 8c46ac3228762fb442b0080c7eb81e5e918543bb時点での canary バージョンを想定して記述していますが、正式にリリースされる際には仕様などに変更が発生する可能性があります。 deno approve-scripts 以前に紹介した deno approve-scriptsコマンドが追加されています。 feat(cli): add approve-scripts AKA “approve-builds” subcommand #31472 この機能はDeno 3.0.0-rc.0で追加されているdeno.jsonのallowScriptsフィールドをベースにしています。 このコマンドの引数にはnpmパッケージを指定可能で、その場合、指定されたパッケージがdeno.jsonのallowScriptsフィールドに追加された後、該当パッケージのライフサイクルスクリプトが実行されます。引数の指定が省略された場合は、deno outdated --update --interactive と同様のUIが表示され、ライフサイクルスクリプトの実行を許可したいパッケージを対話的に選択できます。 # (1) ライフサイクルスクリプトを持つパッケージをインストールします $ deno install npm:better-sqlite3@12.2.0 Add npm:better-sqlite3@12.2.0 ╭ Warning │ │ Ignored build scripts for packages: │ npm:better-sqlite3@12.2.0 │ │ Run "deno approve-scripts" to run build scripts. ╰─ # (2) 対話的に特定パッケージに対するライフサイクルスクリプトの実行を許可できます $ deno approve-scripts ? Select which packages to approve lifecycle scripts for (<space> to select, ↑/↓/j/k to navigate, a to select all, i to invert selection, enter to accept, <Ctrl-c> to cancel) ❯ ○ npm:better-sqlite3@12....
2025/11/24〜2025/11/30の最新情報
Deno Deployのアップデート Deno Deployのchangelogが更新されています。 2025-11-24 Deploy changelog (denoland/docs#2742) このアップデートでは--tunnelオプションについて言及されています。このオプションにより、Deno Deploy が発行した一時的なパブリックドメインからローカルアプリケーションへのアクセスが行えるようです。また、--tunnelオプションに関する公式ドキュメントも追加されています (#2736) 全てのOrganizationで請求が有効化されたようです。デフォルトではFreeプランが使用されるとのことです。 また、Googleアカウントを使用したDeno Deployへのサインインがサポートされています。 Deno DeployがOIDCトークンの発行をサポートしたようです。関連パッケージとしてjsr:@deno/oidcが公開されています。 それ以外にも、カスタムのTLS証明書のサポートやビルドに関するタイムアウトやメモリ割当のカスタマイズなど、様々な改善が実施されているようです。 @lowlighter/vercel-deno Vercel上でDenoを動作させるための@lowlighter/vercel-denoパッケージが公開されています。 リポジトリ: https://github.com/lowlighter/vercel-deno パッケージ: @lowlighter/vercel-deno vercel-community/denoがしばらくメンテナンスされていないことや、現時点における最新のDenoの規約 (deno serveなど) に追従することなどを目的に開発されているようです。
2025/11/17〜2025/11/23の最新情報
Denoの直近のアップデート まだリリースは行われていませんが、直近でいくつか新機能がマージされているため紹介いたします。 --ignore-envオプションが追加 Deno--ignore-envオプションが実装されています。 feat: add --ignore-env=... #31187 例えば以下のようなスクリプトがあったとします: // main.js console.info(Deno.env.get("HOME")); console.info(Deno.env.get("DENO_DIR")); このスクリプトを--ignore-env=HOMEを指定して実行すると、以下のように出力されます: $ deno run --allow-env --ignore-env=HOME main.js undefined /home/uki00a/.cache/deno Deno.env.toObject()を実行した場合、--ignore-envで指定された環境変数が返却結果から除外されます。 この機能はdeno.jsonにおけるパーミッションセット (--permission-set)においてもサポートされています。 { "permissions": { "default": { "env": { "allow": true, "ignore": ["HOME"] } } } } deno audit --socket deno auditコマンドに--socketオプションを追加するPRがマージされています: feat(unstable): add socket.dev integration for deno audit #31106 このオプションを指定すると、@socketsecurity/bun-security-scannerでも使用されているfirewall-api.socket.devエンドポイントを使用してパッケージの検査が行われます。 $ deno audit --socket No known vulnerabilities found Socket....
2025/11/10〜2025/11/16の最新情報
Deno 3.0.0-rc.0 Deno 3.0.0-rc.0 がリリースされています (#31258) v2.5.6 からの差分 まだ dl.deno.land には公開されていないようなので、変わりに canary バージョンで説明します (3.0.0-rc.0+138b2e0) $ deno upgrade 138b2e0e 破壊的変更 下記のタイマーAPIがWeb標準ではなく、Node.js互換 (node:timers) のAPIへと置き換えられています (#31272) setTimeout() setInterval() clearTimeout() clearInterval() globalThis.setTimeout()を実行すると、number型の値ではなくTimeoutオブジェクトが返却されるよう挙動が変わります。 パーミッション --deny-*よりも--allow-*がより特定的であれば、--allow-*の方が優先されるよう挙動が変更されています (#31224) # `docs/*`へのアクセスは拒否するが、`docs/foo.txt`についてのみ許可します (今までのバージョンでは`NotCapable`エラーが発生しました) $ deno --allow-read=docs/foo.txt --deny-read=docs main.js また、--allow-envと--deny-envを併用した際のDeno.env.toObject()およびprocess.envの挙動が変更されています。具体的には、以下のようにDenoを実行した際に、Deno.env.toObject()の返却結果からDENO_DIRとDENO_INSTALL_ROOTが除外されます (#31267) $ deno run --allow-env --deny-env=DENO_DIR,DENO_INSTALL_ROOT main.js allowScripts deno.jsonでallowScriptsフィールドがサポートされています (#31075) allowScriptsの詳細については先週のページを参照いただければと思います。 deno compile deno compileコマンドで--preloadオプションがサポートされています。--preloadで指定されたスクリプトは実行可能ファイル内に組み込まれ、生成された実行可能ファイルが実行される都度、自動で--preloadオプションで指定されたスクリプトが適用されるようです (#31152) deno repl --eval-fileオプションで=の指定の省略がサポートされています (#31151) $ deno repl --eval-file main.js deno coverage deno coverage --htmlで生成されたHTMLレポートにダークモードとライトモードを切り替えるためのトグルが追加されています (#31140)...
2025/11/03〜2025/11/09の最新情報
Denoの直近のアップデート deno.jsonにallowScriptsフィールドが追加 まだリリースは行われていませんが、deno.jsonにallowScriptsフィールドを追加するPRがマージされています。 feat(config): allow storing npm constraints to allow running lifecycle scripts for #31075 --allow-scriptsオプションと同様にライフサイクルスクリプトの実行を許可するnpmパッケージの一覧を指定することができます。 allowScriptsには以下のいずれかの形式で設定が可能です。 true (すべてのnpmパッケージに対してライフサイクルスクリプトの実行を許可) { "allowScripts": true } 配列形式 (指定されたnpmパッケージに対してのみライフサイクルスクリプトの実行を許可) { "allowScripts": ["npm:duckdb", "npm:better-sqlite3"] } オブジェクト形式 (ライフサイクルスクリプトの実行を許可または拒否したいnpmパッケージの一覧を指定可能) { "allowScripts": { "allow": ["npm:duckdb", "npm:better-sqlite3"] } } { "allowScripts": { "allow": true, "deny": ["npm:duckdb"] } } --allow-scriptsとallowScriptsが併用された場合、--allow-scriptsの指定が優先されるようです。 パーミッションブローカーのドキュメント Denoの公式ドキュメントにパーミッションブローカーに関する解説が追加されています。...
2025/10/27〜2025/11/02の最新情報
Deno v2.5.5 & Deno v2.5.6 Deno v2.5.5とDeno v2.5.6がリリースされています。 typescript-goの実験的サポート (--unstable-tsgo) typescript-goの実験的サポートが行われています (#30920) deno checkコマンドに--unstable-tsgoを指定すると、typescript-goを使用した型チェックが実施されます。 $ deno check --unstable-tsgo mod.ts minimumDependencyAge あるパッケージの最新バージョンがインストールされるまでの猶予期間の設定がサポートされています (#30752, #31007, #31031) deno.jsonのminimumDependencyAgeフィールドまたは--minimum-dependency-ageオプションによって猶予期間を指定可能です。 { "minimumDependencyAge": { // 公開されてから最低でも1日 (=1440分) 以上経過しているバージョンのみをインストールします "age": 1440, // `minimumDependencyAge`の適用を除外したいパッケージを指定します "exclude": ["npm:@my-company/some-package"] } } $ deno install --minimum-dependency-age=1440 npm:preact deno audit deno auditコマンドが実装されています (#30966) npmレジストリの Full Audit エンドポイント (/-/npm/v1/security/audits) を利用したパッケージの検査を行うことができます。 $ deno audit No known vulnerabilities found $ deno audit --level=critical No known vulnerabilities found まだマージはされていませんが、deno auditコマンドに--socketオプションを実装するPRが作成されています。...
2025/10/20〜2025/10/26の最新情報
Denoの直近のアップデート typescript-goのサポートがマージ (--unstable-tsgo) 以前に紹介した、deno checkコマンドでtypescript-goをサポートするPRがマージされています (#30920)。まだリリースはされていませんが、canary バージョンで動作を試すことが可能です。 deno checkを実行する際に--unstable-tsgoオプションを指定することで、まずdenoland/typescript-goが${DENO_DIR}/dlへダウンロードされます。 その後、--apiオプションを指定して起動されたtsgoとプロセス間で通信することによって型チェックが実行されているようです (microsoft/typescript-go/cmd/tsgo/main.go#L19-L20) $ deno check --unstable-tsgo mod.ts 詳細はdenoland/deno/docs/tsgo.mdにて解説されています。 deno.jsonでのminimumDependencyAgeのサポート 先週に紹介した、deno.jsonでのminimumDependencyAgeのサポートがマージされています (#31007) さらに、特定のパッケージを対象から除外できるよう、minimumDependencyAgeにおいてオブジェクト形式での設定がサポートされています: feat(unstable): ability to exclude packages from minimum dependency age constraint #31031 minimumDependencyAge.ageフィールドに猶予期間、minimumDependencyAge.excludeフィールドに適用対象から除外したいパッケージを指定できます。 { "minimumDependencyAge": { "age": "PT5H", "exclude": ["npm:preact"] } } deno auditコマンド 以前に紹介した、deno auditコマンドの実装がマージされています。 feat(unstable): add deno audit subcommand #30966 npmレジストリの Full Audit エンドポイント (/-/npm/v1/security/audits) を利用したパッケージの検査がサポートされています。 内部的には firewall-api.socket.dev を使用した検証の実装も含まれているようですが、現時点ではまだユーザーから利用するための手段は提供されていなさそうです。 ecosystem_compat_test 内部的な変更ではありますが、日次でnpm/ yarn/pnpmをDenoで実行し、互換性を検証する仕組みが導入されています:...
2025/10/13〜2025/10/19の最新情報
サプライチェーン攻撃関連の対応について --minimum-dependency-age 以前に紹介した--minimum-dependency-ageオプションを実装するPRがマージされています (#30752) 以前に紹介した時点からの差分として、ISO 8601 durationやRFC 3339形式での日付の指定がサポートされています。 # (1) ISO 8601 duration 形式で5時間を指定 (`--minimum-dependency-age=300`と等価) $ deno install --minimum-dependency-age=PT5H npm:preact # (2) 指定された日付以前にリリースされたバージョンをインストール $ deno install --minimum-dependency-age=2025-10-19T21:00:00.000Z npm:preact このオプションは unstable という扱いのようなので、次のv2.5.5あたりでリリースされる可能性がありそうです。 deno.jsonへのminimumDependencyAgeの追加 まだマージはされていませんが、deno.jsonにminimumDependencyAgeというフィールドを追加するPRが作成されています。 feat(unstable): ability to specify minimum dependency age in deno.json file #31007 b9ad4e6a9c630b46f18aa541140cfcdc14ae622e時点での実装によると、このフィールドに--minimum-dependency-ageと同様のフォーマットで期間を指定しておくことで、--minimum-dependency-ageと同様にインストールされるパッケージのバージョンを制御できるようです。 deno.jsonのminimumDependencyAgeと--minimum-dependency-ageを同時に指定した場合、--minimum-dependency-ageの方が優先されるようです。--minimum-dependency-age=0を指定することで、minimumDependencyAgeを無効化できます。 Hono v4.10.0 Hono v4.10.0がリリースされています。 hono/client Middlewareが返却したレスポンスの型定義をhono/clientが推論できるよう改善されています (#4393) hono/request hono/requestにcloneRawRequest()が追加されています。HonoRequestが保持しているRequestオブジェクトに関して、bodyがすでに使用された場合とそうでない場合をそれぞれ考慮して、賢くRequestをクローンしてくれるようです (#4382) hono/ssg hono/ssgにdefaultPluginが追加されています。これはユーザーがプラグインを指定しなかった際にデフォルトで適用され、ステータスとして200が返却されなかったページの生成をスキップしてくれるようです (#4394) Hono CLI Hono CLIが公開されています。 リポジトリ: honojs/cli 参考: Introduce Hono CLI 主にAIコーディングエージェント向けに使用されることが想定されたhono searchコマンドやHonoアプリケーションを最適化するためのhono optimizeコマンドなど、様々なコマンドが提供されているようです。
2025/10/06〜2025/10/12の最新情報
Deno v2.5.4 Deno v2.5.4がリリースされています。 deno update deno updateでバージョンレンジとして~が指定されたパッケージを更新した際に、更新後にも~が維持されるよう改善されています (#30946) Node.js互換性の改善 node:fs WindowsにおいてStatsオブジェクトのino/nlink/blocksの3つのプロパティーが設定されるよう改善されています (#30866)。Deno.FileInfoにも同様の改善が実施されています。 また、cp()におけるoptions引数のサポート (#30502) やrealpath()におけるencodingオプションのサポート (#30885) も実施されています。 node:crypto X509CertificateのvalidFromDate及びvalidToDateプロパティーが実装されています (#30882) node:zlib 入力が巨大な場合に gunzip() がスタックオーバーフローを起こす問題が修正されています (#30865) その他の改善 JSXプラグマコメントに関するバグの修正 @jsxRuntimeにclassicやautomatic以外の値が設定されている場合や@jsxFrag nullが指定された際などにプロセスがパニックする問題が修正されています (#30935) --tunnelオプションについて 細かな内容ですが、deno runなどの--helpに--tunnelオプション (--connected) の情報が表示されるよう変更されています (#30940)。ローカルから Deno Deploy へセキュアな接続を確立するための機能のようです。 deno_stdのリリース deno_stdのリリースが行われています (release-2025.10.07, release-2025.10.07a) @std/assert@1.0.15 @std/assert@1.0.15がリリースされています。 @std/assert/unstable-equalsと@std/assert/unstable-strict-equalsが追加されています。通常の@std/assert/equals及び@std/assert/strict-equalsとの違いとして、任意でDIFF_CONTEXT_LENGTH環境変数に行数を指定することで、エラーメッセージ中のdiffの省略表示を有効化することが可能です (#6835) また、@std/assert/equalでArrayBufferの比較がサポートされています。assertEquals()などのAPIにも適用されます (#6821) @std/async@1.0.15 @std/async@1.0.15がリリースされています。 @std/async/unstable-throttleにensureLastCallオプションが追加されています。trueを指定すると、タイムフレーム中に複数回throttleされた関数が呼ばれた際に、最後の呼び出しが実行されることが保証されます (#6800) また、@std/async/unstable-wait-forでpredicateにPromiseを返す関数が渡された場合、常にtrueであるとみなされる問題が修正されています (#6839) @std/html@1.0.5 @std/html@1.0.5がリリースされています。 新規APIとしてescapeCss() (@std/html/unstable-escape-css) とescapeJs() (@std/html/unstable-escape-js) が追加されています。escapeCss()はCSS.escape()と同様のロジックで文字列をエスケープし、escapeJs()は<script>タグの中に安全に埋め込めるようにオブジェクトや文字列をエスケープしてくれます (#6782) @std/testing@1.0.16 @std/testing@1.0.16がリリースされています。 @std/testing/unstable-bddで下記APIが追加されています (#6712) describe.todo() it....
2025/09/29〜2025/10/05の最新情報
Deno v2.5.3 Deno v2.5.3がリリースされています。 パーミッションブローカー (DENO_PERMISSION_BROKER_PATH) 先週に紹介したパーミッションブローカーがリリースされました (#30826) 先週に紹介した時点からの差分として、追加で以下の改善が実施されています: レスポンスでreasonフィールドがサポート (#30902) 任意でこのフィールドに文字列を設定することで、権限が拒否された際にユーザーへ表示されるメッセージをカスタマイズできるようです。 Windows でのパーミッションブローカーのサポート (#30894) DENO_PERMISSION_BROKER_PATHに名前付きパイプへのパスを指定することで有効化できるようです。 deno check cloudflare:などのDenoがサポートしないURLスキームが検出されるとエラーが発生する問題が修正されています (#30904)。v2.5.2によるリグレッションであったようです (#30898) また、deno checkコマンドで--v8-flagsオプションがサポートされています (#30868) deno run --watchオプションが指定され かつ Deno.addSignalListener()によってSIGINTへのリスナーを登録してる場合、プロセスがSIGINTで終了しなくなる問題が修正されています (#30635) Deno API Deno.FsFile#stat()のパーミッションの見直し read: falseを指定して実行したDeno.open()から返却されたDeno.FsFileに対してstat()メソッドを呼んだ際に、該当ファイルに対する--allow-read権限が要求されるよう挙動が変更されています (#30876) Deno.FsFile#utime()のパーミッションの見直し write: falseを指定して実行したDeno.open()から返却されたDeno.FsFileに対してutime()メソッドを呼んだ際に、該当ファイルに対する--allow-write権限が要求されるよう挙動が変更されています (#30872) Node.js互換性の改善 node:sqlite --allow-allが指定されている場合のみ ATTACH DATABASE の実行がサポートされました (#30763) node:timers/promises setTimeout()でsignalオプションがサポートされています (#30855) bundleDependencies bundleDependenciesおよびbundledDependenciesの両方が定義されたnpmパッケージをインストールするとエラーが発生する問題が修正されています (#30875) Tunnelling Deno v2.4.1で実装された--connectedオプションが--tunnelにリネームされています (#30786) typescript-goとの統合について (--unstable-tsgo) まだマージはされていないですが、deno checkでtypescript-goを利用できるようにするPRが作成されています: feat(unstable): typescript-go integration for deno check #30920 c0fde0e81ec6c7b5e5e7512b2958be93bb3e41fbの時点においては、--apiオプションを指定して子プロセスとして起動したtsgoとプロセス間で通信することによって統合が実現されているようです。...