Deno v1.28
Deno v1.28がリリースされました。 この記事では主な変更点などについて解説します。 npmパッケージサポートの安定化 Deno v1.25で実装されたnpmパッケージサポートが安定化されました。 今後は--unstableなしでnpmパッケージを読み込むことができます。 $ cat main.js import chalk from "npm:chalk@5.1.2"; console.log(chalk.green("Deno")); $ deno run --allow-read --allow-env main.js ただし、リモートモジュールの中にnpm:が含まれていた際は、従来どおり--unstableが要求されるため注意が必要そうです。 その他にも以下の改善などが実施されています。 peerDependenciesがサポート deno info --jsonでnpm:がサポート import.meta.resolveでnpm:が無効化 今後npmパッケージサポートに関して計画されている変更内容についてはロードマップを参照ください。 ロックファイルの自動適用と生成がサポート Denoにはアプリケーションが依存するサードパーティモジュールの内容を元にハッシュ値を計算し、ロックファイルと呼ばれるファイルに保存する機能があります。 アプリケーションを実行する際にサードパーティモジュールから再度ハッシュ値を計算し、ロックファイルに書き込まれたハッシュ値と比較することで、サードパーティモジュールの内容が改ざんされていないことを保証することができます。(インテグリティチェック) この挙動を有効化するには、従来では--lockと--lock-writeの指定が必要でした。 このリリースでは、deno.json(c)が存在する場合、ロックファイル(deno.lock)の生成とインテグリティチェックが自動で実施されるように挙動が変更されました。 $ ls deno.json main.js $ deno run main.js $ ls deno.json deno.lock main.js この変更に合わせて、既存のオプションやインテグリティチェックに関する挙動も一部変更されています。 --lockオプションの引数がオプショナルに変更 (デフォルトはdeno.lock) ロックファイルに列挙されていないパッケージが見つかった際に、インテグリティチェックが失敗しないように挙動が変更 新しく検出されたパッケージについては、ハッシュが自動でロックファイルに書き込まれます。そのパッケージのインテグリティチェックについては、次回以降のDenoの実行から適用されます。 また、このロックファイルの自動適用と生成を無効化するために--no-lockという新しいオプションも追加されています。 Deno.Commandの追加 Deno.CommandというDenoからサブプロセスを生成するための新しいAPIが実装されました。 利用するには--unstableと--allow-runの指定が必要です。 使用例 コマンドの実行結果の非同期での取得: const command = new Deno....