Home

Awesome

Dockerfile Language Service

Node.js Builds Coverage Status Build Dependencies License: MIT

This is a language service for Dockerfiles written in TypeScript. If you are looking for an actual Dockerfile language server that can be used with editors that implement the language server protocol, please visit the rcjsuen/dockerfile-language-server-nodejs repository.

The purpose of this project is to provide an API for creating a feature-rich Dockerfile editor. While this language service implements requests from the language server protocol, they are exposed as regular JavaScript functions so you can use them in the browser if you wish. For a demonstration of this language service's capabilities with Microsoft's Monaco Editor, please click here.

To install this language service as a dependency into your project, you will need to have Node.js installed.

Supported features:

Development Instructions

If you wish to build and compile this language server, you must first install Node.js if you have not already done so. After you have installed Node.js and cloned the repository with Git, you may now proceed to build and compile the language server with the following commands:

npm install
npm run build
npm test

If you are planning to change the code, use npm run watch to get the TypeScript files transpiled on-the-fly as they are modified.

Installation Instructions

To add this language service into your project, you must add dockerfile-language-service as a dependency in your package.json file.

Browser Example

The /example/ folder includes an example for using this language service in a browser as a static HTML page with JavaScript. To build the example, please run the following commands from the root of the project:

npm install
cd example
npm install
npm run build

As the example naturally relies on the language service, it is necessary to invoke npm install on the root folder first before invoking npm install in the /example/ folder. Once npm run build has completed, you can open the /example/lib/index.html in a browser to test things out!