monaco-volar

Vue support for monaco
57,352 181
Install
npm install monaco-volar
Latest Version:0.4.0
Vue:3
License:MIT
Last Updated:Dec 16, 2023
Links: GitHub  ·  npm
Maintainer: kingwl

monaco-volar

Try it!

Install

Monaco-volar has external dependency Onigasm (to highlight code).

pnpm add monaco-volar monaco-editor-core onigasm

# or

yarn add monaco-volar monaco-editor-core onigasm

Setup

Import

Import monaco-volar when you are using monaco. It will register vue as a language automatic.

import 'monaco-editor-core'
import 'monaco-volar'

Setup highlight

Init Onigasm

VSCode are using Onigasm to highlight codes. And we have adapted the Onigasm and monaco. And some pre-defined grammars.

Onigasm needs a wasm module before using. We have to load it first.

import * as onigasm from "onigasm";
import onigasmWasm from "onigasm/lib/onigasm.wasm?url";

function loadOnigasm() {
  return onigasm.loadWASM(onigasmWasm);
}

loadOnigasm()

Apply grammars

Now we can apply grammars into monaco editor instance.

import { editor } from "monaco-editor-core";
import { loadGrammars, loadTheme } from "monaco-volar";

const theme = loadTheme()

const editorInstance = editor.create(element, {
    theme,
    /* other options*/
})

loadGrammars(editorInstance);

Setup language service

Provide web worker

We need to let monaco know where and how to load out worker when using Vue.

import editorWorker from "monaco-editor-core/esm/vs/editor/editor.worker?worker";
import vueWorker from "monaco-volar/vue.worker?worker";

function loadMonacoEnv() {
  (self as any).MonacoEnvironment = {
    async getWorker(_: any, label: string) {
      if (label === "vue") {
        return new vueWorker();
      }
      return new editorWorker();
    },
  };
}

loadMonacoEnv()

Create vue model

Now we can just create a model using vue language.

const model = editor.createModel(code, 'vue', uri);

Related Packages

vite-plugin-monaco-editor

A vite plugin for the Monaco Editor

8,962,220 234
@akrc/vite-plugin-monaco-editor

A vite plugin for the Monaco Editor

28,475 1
vite-plugin-monaco-editor-new

A vite plugin for the Monaco Editor

2,389 234
vue-monaco-cdn

Lightweight MonacoEditor component for Vue.js using CDN

6,109 20
@stonecrop/code-editor

Monaco-based code editor component for Stonecrop

22,693 13

Version History

Version Released License
0.4.0 MIT
0.3.1 MIT
0.3.0 MIT
0.2.0 MIT
0.1.1 MIT