Skip to content

burkaysucu/monaco-languageclient

 
 

Repository files navigation

Monaco language client

Gitpod - Code Now PRs Welcome monaco-languageclient NPM Version NPM Download

NPM module to connect Monaco editor with language servers.
Click here for a detail explanation how to connect the Monaco editor to your language server.

Introduction

Project Modernization

From release 0.19.0 onward the project switched to npm workspaces. We no longer require yarn, lerna and webpack. Mostly therefore the list of devDependencies is substantially shorter. All code has been moved to ./packages directory.

As before the library code is just compiled with the TypeScript compiler and the library is now packaged with npm. The need for bundling does no longer exist for the example. The compiled code is either executed by node or the web/client related code/pages are served with vite.js.

Getting started

Development environments

On your local machine you can prepare your dev environment as follows. From CLI in root of the project run:

git clone https://github.com/TypeFox/monaco-languageclient.git
cd monaco-languageclient
npm i
# Cleans-up and compiles everything
npm run build

Or you use a fresh dev environment in Gitpod which is a one-click online IDE for GitHub.

Open in Gitpod

Scripts Overview

The main package.json contains script entries applicable to the whole workspace like clean amd compile, but it also has entries for launching script from the packages (lib and examples).

For example if you want to rebuild the library you can do it in different ways. From CLI run one of:

# from the root
npm run build-client
npm --prefix packages/client run build
npm --workspace packages/client run build
# or from packages/client
cd packages/client && npm run build

Examples

There are two different examples (one is a client-server one now separated) that demonstrate how the monaco-languageclient can be used. The Node.js example uses Express and WebSockets to enable communication between the language server process and the web application. The browser example shows how a language service written in JavaScript can be used in a Monaco Editor contained in a simple HTML page.

All example packages now are now located under ./packages/examples:

Node.js Language Server plus web client example

From CLI in root of the project run:

# optionally: we assume everything is build as stated above
npm run build
# to start the express server with the language server running in the same process.
npm run start-example-node
# to start the express server with language server running in the external process.
npm run start-example-node:ext
# launches vite development server
npm run dev

After launching vite development server go to https://localhost:8080/packages/examples/client/index.html . vite actually servers all client code and if you go to just https://localhost:8080 you can select if you want to open Web Client for Node.js Language Server or Browser Example.

You can edit the client example code directly (TypeScript) and vite ensures it automatically made available

Browser example

From CLI in root of the project you just need to run. If it is already running there is nothing more to do berforehand:

# launches vite development server
npm run dev

After launching vite development server go to https://localhost:8080/packages/examples/browser/index.html . vite actually servers all client code and if you go to just https://localhost:8080 you can select if you want to open Web Client for Node.js Language Server or Browser Example.

You can edit the client example code directly (TypeScript) and vite ensures it automatically made available

VSCode integration

You can as well run vscode tasks to start and debug the server in different modes and the client.

License

MIT

About

NPM module to connect Monaco editor with language servers

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 99.3%
  • Other 0.7%