Skip to content

ethereum/remix-plugin

Repository files navigation

Remix Plugin

Remix plugin is a universal plugin system written in Typescript.

It provides an extendable engine that simplifies communication between multiple internal or external sources.

This repository manages multiple projects related to remix plugins. It's divided into two main categories :

  • Engine: A library to manage communication between plugins.
  • Plugin: A library to create an external plugin.

Engine

The core component of the engine is the @remixproject/engine library. It can be extended to run in different environments.

Name Latest Version Next Version
@remixproject/engine badge badge
@remixproject/engine-vscode badge badge
@remixproject/engine-web badge badge
@remixproject/engine-node badge badge

To create a new environment connector, check out @remixproject/engine.

Plugin

The core component of the plugin is the @remixproject/plugin library. It can be extended to run in different environments.

Name Latest Version Next Version
@remixproject/plugin badge badge
@remixproject/plugin-vscode badge badge
@remixproject/plugin-iframe badge badge
@remixproject/plugin-webview badge badge
@remixproject/plugin-child-process badge badge

To create a new environment connector, check out @remixproject/plugin.

API

Remix plugin offers a set of common APIs for plugins to implement. This set of APIs is used in remix-ide, therefore every plugin running inside remix-ide should be able to run in an engine that implements these APIs.

Name Latest Version Next Version
@remixproject/plugin-api badge badge

The first goal of remix plugin is to enable a plugin to work in the envrionments of multiple engines. If a plugin has dependancies on other plugins, each engine must implement these dependancies.

Contribute

Setup

git clone https://github.com/ethereum/remix-plugin.git
cd remix-plugin
npm install

See dependancy graph

To better understand the project structure, you can display a dependancy graph with:

npm run dep-graph

Open your browser on http://localhost:4211/.

Build

This uses nx's affected:build to only update what has been changes since last build.

npm run build

Build a specific project

npx nx build ${projectName} --with-deps

Example for engine-vscode :

npx nx build engine-vscode --with-deps

Test

This uses nx's affected:test to only update what has been changes since last test.

npm test

Publish

This uses lerna to deploy all the packages with a new version:

npm run deploy:latest

OR

npm run deploy:next