monaco-editor/CONTRIBUTING.md

4.0 KiB

Contributing / Dev Setup

Source Code Structure

It is important to understand that the Monaco Editor Core is built directly from the VS Code source code. The Monaco Editor then enhances the Monaco Editor Core with some basic language features.

This diagram describes the relationships between the repositories and the npm packages:

By default, monaco-editor-core is installed from npm (through the initial npm install), so you can work on Monaco Editor language features without having to build the core editor / VS Code. The nightly builds build a fresh version of monaco-editor-core from the main branch of VS Code. For a stable release, the commit specified in vscodeRef in package.json specifies the commit of VS Code that is used to build monaco-editor-core.

Contributing a new tokenizer / a new language

Please understand that we only bundle languages with the monaco editor that have a significant relevance (for example, those that have an article in Wikipedia).

  • create $/src/basic-languages/{myLang}/{myLang}.contribution.ts
  • create $/src/basic-languages/{myLang}/{myLang}.ts
  • create $/src/basic-languages/{myLang}/{myLang}.test.ts
  • edit $/src/basic-languages/monaco.contribution.ts and register your new language
  • create $/website/index/samples/sample.{myLang}.txt
import './{myLang}/{myLang}.contribution';

Debugging / Developing The Core Editor

To debug core editor issues.

This can be done directly from the VS Code repository and does not involve the monaco editor repository.

  • Clone the VS Code repository: git clone https://github.com/microsoft/vscode

  • Open the repository in VS Code: code vscode

  • Run yarn install

  • Select and run the launch configuration "Monaco Editor Playground" (this might take a while, as it compiles the sources):

  • Now you can set breakpoints and change the source code

  • Optionally, you can build monaco-editor-core and link it to the monaco editor repository:

    # builds out-monaco-editor-core
    > yarn gulp editor-distro
    
    > cd out-monaco-editor-core
    > npm link
    > cd ../path/to/monaco-editor
    
    # symlinks the monaco-editor-core package to the out-monaco-editor-core folder we just built
    > npm link monaco-editor-core
    

Debugging / Developing Language Support

To debug bundled languages, such as JSON, HTML or TypeScript/JavaScript.

  • Clone the monaco editor repository: git clone https://github.com/microsoft/monaco-editor

  • Open the repository in VS Code: code monaco-editor

  • Run npm install

  • Select and run the launch configuration "Monaco Editor Playground" (this might take a while, as it compiles the sources):

  • Now you can set breakpoints and change the source code

  • Optionally, you can build monaco-editor and link it if you want to test your changes in a real application:

    # builds out/monaco-editor
    > npm run build-monaco-editor
    
    > cd out/monaco-editor
    > npm link
    
    > cd ../path/to/my-app
    > npm link monaco-editor
    

Running the editor tests

> npm run build-monaco-editor
> npm run test
> npm run compile --prefix webpack-plugin

> npm run package-for-smoketest-webpack
> npm run package-for-smoketest-esbuild
> npm run package-for-smoketest-vite
> npm run package-for-smoketest-parcel --prefix test/smoke/parcel
> npm run smoketest-debug

Running the website locally

> npm install
> npm run build-monaco-editor

> cd website
> yarn install
> yarn typedoc
> yarn dev

Now webpack logs the path to the website.

Out Folders

This diagram describes the output folders of the build process:

Maintaining

Checkout MAINTAINING.md for common maintaining tasks (for maintainers only).