Denoチームが最近Deno 2をリリースした。チームによると、Deno 2はレガシーJavaScriptインフラストラクチャとのシームレスな相互運用性、安定化した標準ライブラリ、ランタイム間でJavaScriptライブラリを共有するためのモダンレジストリなどを提供する。
Deno 2は、Nodeやnpmとの下位互換性を謳っている。リリースノートにはこう説明されている:
Deno 2は
package.json
、node_modules
フォルダ、npmワークスペースを理解し、ESMを使う任意のNodeプロジェクトでDenoを実行できます。もし簡単な構文調整が必要なら、deno lint --fix
で修正できます。
上記互換性により、チームはDenoとそのオールインワン・ツールチェーンを段階的に採用することができる。Deno開発者は、npm:
指定子を使ってnpmパッケージをインポートできる:
import chalk from "npm:chalk@5.3.0";console.log(chalk.blue("Hello, world!"));// Hello, world! (in blue)
開発者はインポートマップを活用してnpmパッケージにベア指定子を設定することもできる:
// deno.json{ "imports": { "chalk": "npm:chalk@5.3.0" }}
その後、モジュールはベア指定子を使って利用できる:
import chalk from "chalk";console.log(chalk.blue("Hello, world!"));// Hello, world!(in blue)
Deno 2は一般に使用される多くのWebフレームワーク(Next.js、Astro、Remix、Angular、SvelteKit、QwikCityなど)をサポートすると表明している。
Deno 2はさらに、deno install
、deno add
、deno remove
による依存性管理をサポートしている。後者2コマンドはそれぞれpackage.json
ファイルからパッケージを追加、削除する。
Deno標準ライブラリが安定版となり、Deno 2に含まれている。この標準ライブラリは、データ操作、Web関連のロジック、JavaScript固有の機能など、数十の監査済みユーティリティモジュールで構成されている。ESM(JavaScriptネイティブモジュール)を採用、TypeScriptパッケージをネイティブに受け入れるDenoのJavaScript Registry (JSR) から、開発者は標準ライブラリの 完全なモジュールリストを確認できる。
リリースノートはJSRのベネフィットをこう説明している:
TypeScriptをネイティブにサポートし(TypeScriptのソースコードとしてモジュールを公開可能)、複数のランタイムと環境でのモジュールロードの複雑さを処理し、ESMのみ許可し、JSDocスタイルのコメントからドキュメントを自動生成し、npmやnpxのようなシステムでも使用できます(その通り、JSRはTypeScriptを
.jsや
.d.ts
ファイルに変換します)。
Denoは関連し相互に依存する複数のパッケージを同時に管理するためのワークスペースもサポートしている(「モノレポ」としても知られる)。Denoワークスペースは既存のnpmパッケージからDeno優先パッケージを使うことをサポートし、npmワークスペースからの移行を容易にする。
開発者はdotcom-2.deno から本番リリースをインストールできる。開発者は機能、改善点、バグ修正の完全なリストを含むオリジナルリリースノートを確認することが推奨される。DenoはMITライセンスの下で利用可能なオープンソースソフトウェアである。Denoプロジェクト を通してのコントリビューションが推奨されており、それはDenoコントリビューション・ガイドラインに従う必要がある。