このプロジェクトについて

Monaco Editorは、VS Codeの本格的なコードエディタをブラウザで動作するライブラリとしてパッケージ化したものです。npmの`monaco-editor`として公開されており、webpackなどのバンドラーに対応したESMビルドと、後方互換性のために維持されている非推奨のAMDビルドが同梱されています。バージョン管理された公開APIサーフェスは`monaco.d.ts`に記述されており、それ以外はすべて非公開とみなされ、リリース間で変更される可能性があります。 中核となる概念は次のとおりです。 - モデルは開かれたコンテンツを表します。テキストを保持し、言語を決定し、編集履歴を追跡します。モデルは実際のファイルに対応する必要はありません。 - URIはモデルを識別します。そのため、2つのモデルが同じURIを共有することはできません。URIを指定せずに作成されたモデルには、生成された`inmemory://model/N` URIが割り当てられます。意味のあるURIを選択することが重要です。なぜなら、TypeScriptのインポート解決やJSONスキーマの選択など、一部のスマート機能はファイルURIに依存するからです。 - エディタはDOMに接続されたユーザー向けビューです。モデルを表示し、ビュー状態を管理し、アクションやコマンドを実行します。 - プロバイダーは、補完やホバー情報などのスマートなエディタ機能を提供します。多くの場合、Language Server Protocolの機能に対応します。 - 多くのオブジェクトはクリーンアップ用の`.dispose()`を公開しています。モデルを破棄するとそのURIが解放され、エディタはリソースとリスナーを解放するために破棄する必要があります。 ローカライゼーションは、メインのエディタスクリプトの前に一致するnlsスクリプト(例:`esm/nls.messages.de.js`)を読み込むことで処理されます。READMEには、機能の試用、バージョンのテスト、最小限の再現の構築ができるインタラクティブなプレイグラウンドに加え、完全な統合サンプル、APIドキュメント、統合者向けのアクセシビリティガイド、新しい言語のトークナイザーを作成するためのMonarchプレイグラウンドへのリンクがあります。 FAQでは、Monacoはブラウザで実行できるようにシムを使ってVS Codeのソースから生成されていること、そのバージョンはVS Codeのバージョンとは連動しないこと、VS Codeの拡張機能は完全にLSPベースでJavaScript言語サーバーを備えていない限り一般的には動作しないことが説明されています。言語サービスはWebワーカーを使用します。`file://`経由で読み込まれたページはワーカーを作成できないため、エディタはhttpまたはhttpsで提供する必要があります。モバイルブラウザやモバイルWebアプリフレームワークはサポートされておらず、TextMate文法は組み込まれていません(別のコミュニティプロジェクトがmonaco-editorをvscode-onigurumaおよびvscode-textmateと組み合わせています)。このプロジェクトはMITライセンスであり、コミュニティからの貢献を歓迎しています。