Deno 1.6は、Denoプロジェクトのスタンドアロン実行可能ファイルへのコンパイルを導入した。そのサイズはDeno 1.7でさらに小さくなった(最大60%)。Denoには専用の言語サーバがある。コードエディタでのDeno開発者のエクスペリエンスを向上させることを目的としたものである。Denoは、データURLのサポートを追加し、コンピューターで生成されたコードを実行できるようになった。
Deno 1.6のリリースノートでは、新しいコンパイルツールチェーンについて次のように説明している。
deno compile
はDenoに対して、nexe
あるいはpkg
がNodeに対して行うことと同じことを行う。つまり、JavaScriptあるいはTypeScriptソースコードからスタンドアロンの自己完結型バイナリを作成する。これは、Deno課題追跡システムで最も票を集めた課題である。
Denoアプリケーションを自己完結型のバイナリにコンパイルすると、NodeまたはNectarjs JavaScriptネイティブコンパイラと同じユースケースを扱える。たとえば、一部の開発者は、クローズドソースの商用/デモ/試用版のアプリケーションを作成したい場合がある。アプリケーションを一連のプラットフォームに対する単一のファイルとしてデプロイできる。あるいは、移植性の目的で実行可能ファイル内にアセットを組み込める。
リリースノートには、新しいコンパイル機能の使用例が記載されている。
Denoコンパイラは、コンパイルするコンピュータのアーキテクチャに関係なく、サポートされている任意のアーキテクチャ(Windows x64、MacOS x64、Linux x64)にコンパイルできる。これは、LinuxマシンがWindows用あるいはMacOS用の実行可能ファイルを作成できることを意味する。--lite
オプション(Deno 1.7で使用可能)は、40~60%小さいバイナリを生成する。deno compile
は、組み込みのCA証明書、カスタムV8フラグ、ロックダウンされたDeno権限、事前設定されたコマンドライン引数を持つバイナリも作成できる。ただし、いくつかの制限がある。Denoコンパイルは、Webワーカーも動的インポートもサポートしない。
Deno 1.6では新たにlsp
サブコマンドが導入された。Language Server Protocol(LSP)を実装している言語サーバを起動するものである。LSPは、コードエディターあるいは統合開発環境と言語サーバとの間で使用されるプロトコルを定義している。これによって、コード補完、定義元へのジャンプ、リンティングなどの便利な機能が提供される。現在、deno lsp
は、コード補完、ホバーによるヒント、定義元へのジャンプ、参照への移動アクションを実装している。Deno VSCode拡張機能は、まだdeno lsp
をサポートしていない。
Deno 1.7では、さらにデータURLをサポートしている。次のデータURL"data:application/typescript;base64,ZXhwb3J0IGNvbnN0IGEgPSAiYSI7CgpleHBvcnQgZW51bSBBIHsKICBBLAogIEIsCiAgQywKfQo="
は、次のTypeScriptソースコードをbase64でエンコードする。
export const a = "a";
export enum A {
A,
B,
C,
}
データURLにエンコードされたコードは、通常のインポート構文でインポートできる(import * as a from "data:application/typescript;base64,..."
)。この機能は、動的に生成されたコンテンツを実行する場合に特に便利である。類似の機能を使用して、Svelteフロントエンドフレームワークのインタラクティブなプレイグラウンドを実装できる。プレイグラウンドのユーザがテキスト領域に入力したソースコードは、前処理され、バンドルされ、URLオブジェクトを介してインポートされ、実行されて、プレビューペインに表示される。データURLはWebワーカーでも使用できる。
Deno 1.6と1.7のリリースノートには、リリースの一部として追加されたマイナー機能が詳しく説明されている。Denoは、MITライセンスの下で利用可能なオープンソースソフトウェアである。コントリビューションはDenoプロジェクトを通じて奨励されており、Denoコントリビューションガイドラインに従う必要がある。