4.3 KiB
Contributing to n8n
Great that you are here and you want to contribute to n8n
Contents
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:
- /docker/image - Dockerfiles to create n8n containers
- /docker/compose - Examples Docker Setups
- /packages - The different n8n modules
- /packages/cli - CLI code to run front- & backend
- /packages/core - Core code which handles workflow execution, active webhooks and workflows
- /packages/editor-ui - Vue frontend workflow editor
- /packages/node-dev - Simple CLI to create new n8n-nodes
- /packages/nodes-base - Base n8n nodes
- /packages/worflow - Workflow code with interfaces which get used by front- & backend
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
The packages which n8n uses depend on a few build tools:
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 facilitate those modules management, lerna gets 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:
-
Clone the repository
git clone https://github.com/n8n-io/n8n.git
-
Go into repository folder
cd n8n
-
Install all dependencies of all modules and link them together:
lerna bootstrap --hoist
-
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 dev
. It will then
automatically build your code, restart the backend and refresh the frontend
(editor-ui) on every change you make.
- Start n8n in development mode:
npm run dev
- hack, hack, hack
- Check if everything still runs in production mode
npm run build npm run start
- Create tests
- Run all tests
npm run test
- Commit code and create pull request
Test suite
The tests can be started via:
npm run test
If that gets executed in one of the package folders it will only run the tests of this package. If it gets executed in the n8n-root folder it will run all tests of all packages.
Create Custom Nodes
It is very easy to create own nodes for n8n. More information about that can be found in the documentation of "n8n-node-dev" which is a small CLI which helps with n8n-node-development.
Extend Documentation
All the files which get used in the n8n documentation on https://docs.n8n.io can be found in the /docs folder. So all changes and additions can directly be made in there
That the markdown docs look pretty we use docsify. It is possible to test locally how it looks like rendered with the following commands:
# 1. Install docisify
npm i docsify-cli -g
# 2. Go into n8n folder (the same folder which contains this file). For example:
cd /data/n8n
# 3. Start docsificy
docsify serve ./docs
``