Об этом проекте

Monaco Editor — это полнофункциональный редактор кода из VS Code, упакованный как библиотека, работающая в браузере. Он публикуется на npm как `monaco-editor` и поставляется с ESM-сборкой (совместимой с бандлерами, такими как webpack), а также с устаревшей AMD-сборкой, сохранённой для обратной совместимости. Версионируемая публичная поверхность описана в `monaco.d.ts`; всё остальное считается приватным и может меняться между релизами. Основные концепции: - Модели представляют открытое содержимое: они хранят текст, определяют язык и отслеживают историю правок. Модель не обязательно должна соответствовать реальному файлу. - URI идентифицируют модели, поэтому две модели не могут иметь один и тот же URI. Модели, созданные без URI, получают сгенерированные URI вида `inmemory://model/N`. Выбор осмысленных 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. Языковые сервисы используют веб-воркеры; страницы, загруженные через `file://`, не могут создавать воркеры, поэтому редактор должен обслуживаться по http или https. Мобильные браузеры и мобильные веб-фреймворки не поддерживаются, а грамматики TextMate не встроены (отдельный проект сообщества объединяет monaco-editor с vscode-oniguruma и vscode-textmate). Проект распространяется под лицензией MIT и приветствует вклад сообщества.