diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000..f6c86e0222 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,107 @@ +# 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](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](/docker/image) - Dockerfiles to create n8n containers + - [/docker/compose](/docker/compose) - Examples Docker Setups + - [/packages](/packages) - The different n8n modules + - [/packages/cli](/packages/cli) - CLI code to run front- & backend + - [/packages/core](/packages/core) - Core code which handles workflow + execution, active webhooks and + workflows + - [/packages/editor-ui](/packages/editor-ui) - Vue frontend workflow editor + - [/packages/node-dev](/packages/node-dev) - Simple CLI to create new n8n-nodes + - [/packages/nodes-base](/packages/nodes-base) - Base n8n nodes + - [/packages/worflow](/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 + +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](https://lerna.js.org) 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 +``` diff --git a/README.md b/README.md index e1a0e53f49..97680ae89d 100644 --- a/README.md +++ b/README.md @@ -33,11 +33,7 @@ And information about how to run it in Docker [here](https://github.com/n8n-io/n ## Development Setup -1. Clone the repository -2. Go into repository folder -3. Run: `npm install` -4. Run: `npx lerna bootstrap --hoist` -5. Run: `npm run build` or `npx lerna exec npm run build` (if lerna is not installed) +A guide how to set everything up can be found in the file [CONTRIBUTING.md](CONTRIBUTING.md)