n8n/CONTRIBUTING.md
2019-08-14 09:14:24 +02:00

3 KiB

Contributing to n8n

Great that you are here and you want to contribute to n8n

Code of Conduct

This project and everyone participating in it are governed by the Code of Conduct which can be found in the file CODE_OF_CONDUCT.md. By participating, you are expected to uphold this code. Please report unacceptable behavior to jan@n8n.io.

Directory Structure

n8n is split up in different modules which are all in a single mono repository.

The most important directories:

Development Setup

If you want to change or extend n8n you have to make sure that all needed dependencies are installed and the packages get linked correctly. Here a short guide on how that can be done:

Requirements

Build Tools

That all the packages which n8n uses can be installed and compiled correctly the essential build tools must be installed. This is probably already the case for the most people but if you are totally new to development or just setting up a new computer it is probably still missing.

Linux:

apt-get install -y build-essential python

Windows:

npm install -g windows-build-tools

lerna

n8n is split up in different modules which are all in a single mono repository. To make development as easy as possible does lerna get used. It automatically sets up file-links between modules which depend on each other.

So for the setup to work correctly lerna has to be installed globally like this:

npm install -g lerna

Actual n8n setup

Now that everything n8n requires to run is installed the actual n8n code can be checked out and set up:

  1. Clone the repository

    git clone https://github.com/n8n-io/n8n.git
    
  2. Go into repository folder

    cd n8n
    
  3. Install all dependencies of all modules and link them together:

    lerna bootstrap --hoist
    
  4. Build all the code:

    npm run build
    

Start

To start n8n execute:

npm run start

Development Cycle

While iterating on n8n modules' code, you can run npm run watch to automatically build your changes. This will alert you as soon as something gets broken.

  1. npm run watch
  2. hack, hack, hack
  3. npm run start
  4. test

Test suite

TODO: how to run jest or other automated test tools