vue-editor-monaco
WARN⚠️:This plugin has lots of problems, it will be repaired when i have time.
Monaco Editor Vue Component
Based off vue-monaco-editor
Improved the original problem, only for business needs。
Setup
npm install vue-editor-monaco --save
Simple Vue Use
// use in component components: MonacoEditor
Component Props
Option | Type | Default | Description |
---|---|---|---|
language | String | javascript |
|
height | Number/String | 100% |
|
width | Number/String | 100% |
|
code | String | // code \n |
Initial code to show |
theme | String | vs-dark |
vs, hc-black, or vs-dark |
highlighted | Array[Object] | [{ number: 0, class: ''}] |
Lines to highlight with numbers and .classes |
changeThrottle | Number(ms) | 0 |
throttle codeChange emit |
srcPath | String | "" |
see Webpack Use below |
editorOptions | Object | Merged with defaults below | See Monaco Editor Options |
Editor Default Options
defaults: selectOnLineNumbers: true roundedSelection: false readOnly: false cursorStyle: 'line' automaticLayout: false glyphMargin: true
Component Events
These events are available to parent component
Event | Returns | Description |
---|---|---|
mounted | editor [editor instance] |
Emitted when editor has mounted |
codeChange | editor [editor instance] |
Emitted when code has changed |
Example
Component Implementation
<MonacoEditor height="600" language="typescript" :code="code" :editorOptions="options" @mounted="onMounted" @codeChange="onCodeChange" ></MonacoEditor>
Parent
moduleexports = components: Monaco { return code: '// Type away! \n' options: selectOnLineNumbers: false ; } methods: { thiseditor = editor; } { console; } ;
Webpack Use
By default, monaco-editor is loaded from a cdn asyncronously using require
. To use a local copy of monaco-editor
with webpack, we need to expose the dependency in our build directory:
npm install copy-webpack-plugin --save-dev
Add this to your webpack.config.js:
const CopyWebpackPlugin = ;moduleexports = plugins: from: 'node_modules/monaco-editor/min/vs' to: 'vs' ;
Then, specify the build directory path in the srcPath
prop. See src/App.vue
for an example.
Dev Use
git clone [this repo] .
npm install
npm run dev
Edit src/App.vue