From 0c6c02465edd9f68d960ed08f71dfc502250d103 Mon Sep 17 00:00:00 2001 From: Gabriel <83644514+gpene@users.noreply.github.com> Date: Wed, 15 Sep 2021 08:52:23 +0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=9A=20Update=20Contributing=20steps=20?= =?UTF-8?q?(#2187)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 📚 Update Contributing steps * Update CONTRIBUTING.md Co-authored-by: Ben Hesseldieck <1849459+BHesseldieck@users.noreply.github.com> * Update CONTRIBUTING.md Co-authored-by: Ben Hesseldieck <1849459+BHesseldieck@users.noreply.github.com> Co-authored-by: Ben Hesseldieck <1849459+BHesseldieck@users.noreply.github.com> --- CONTRIBUTING.md | 55 ++++++++++++++++++++----------------------------- 1 file changed, 22 insertions(+), 33 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 286cf7a98e..e98f9c97ce 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,6 @@ Great that you are here and you want to contribute to n8n - ## Contents - [Code of Conduct](#code-of-conduct) @@ -15,16 +14,14 @@ Great that you are here and you want to contribute to n8n - [Extend Documentation](#extend-documentation) - [Contributor License Agreement](#contributor-license-agreement) - -## Code of Conduct +## 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 +## Directory structure n8n is split up in different modules which are all in a single mono repository. @@ -36,7 +33,8 @@ The most important directories: - [/packages/cli](/packages/cli) - CLI code to run front- & backend - [/packages/core](/packages/core) - Core code which handles workflow execution, active webhooks and - workflows + workflows. **Contact n8n before + starting on any changes here** - [/packages/design-system](/packages/design-system) - Vue frontend components - [/packages/editor-ui](/packages/editor-ui) - Vue frontend workflow editor - [/packages/node-dev](/packages/node-dev) - CLI to create new n8n-nodes @@ -44,17 +42,14 @@ The most important directories: - [/packages/workflow](/packages/workflow) - Workflow code with interfaces which get used by front- & backend - -## Development Setup +## 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 +#### Build tools The packages which n8n uses depend on a few build tools: @@ -86,18 +81,23 @@ So for the setup to work correctly lerna has to be installed globally like this: npm install -g lerna ``` - ### Actual n8n setup > **IMPORTANT**: All the steps bellow have to get executed at least once to get the development setup up and running! - Now that everything n8n requires to run is installed the actual n8n code can be checked out and set up: -1. Clone the repository +1. [Fork](https://guides.github.com/activities/forking/#fork) the n8n repository + +1. Clone your forked repository ``` - git clone https://github.com/n8n-io/n8n.git + git clone https://github.com//n8n.git + ``` + +1. Add the original n8n repository as `upstream` to your forked repository + ``` + git remote add upstream https://github.com/n8n-io/n8n.git ``` 1. Go into repository folder @@ -115,8 +115,6 @@ checked out and set up: npm run build ``` - - ### Start To start n8n execute: @@ -130,7 +128,7 @@ To start n8n with tunnel: ./packages/cli/bin/n8n start --tunnel ``` -## Development Cycle +## 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 @@ -147,12 +145,11 @@ automatically build your code, restart the backend and refresh the frontend npm run start ``` 1. Create tests -1. Run all tests +1. Run all [tests](#test-suite) ``` npm run test ``` -1. Commit code and create pull request - +1. Commit code and [create a pull request](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork) ### Test suite @@ -165,34 +162,26 @@ 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 - -## Create Custom Nodes +> **IMPORTANT**: Avoid use of external libraries to ensure your custom nodes can be reviewed and merged quickly. Learn about [using the node dev CLI](https://docs.n8n.io/nodes/creating-nodes/node-dev-cli.html) to create custom nodes for n8n. -More information can -be found in the documentation of [n8n-node-dev](https://github.com/n8n-io/n8n/tree/master/packages/node-dev), which is a small CLI which -helps with n8n-node-development. - - +More information can be found in the documentation of [n8n-node-dev](https://github.com/n8n-io/n8n/tree/master/packages/node-dev), a small CLI which helps with n8n-node-development. ## Create a new node to contribute to n8n Follow this tutorial on [creating your first node](https://docs.n8n.io/nodes/creating-nodes/create-node.html) for n8n. - - ## Checklist before submitting a new node There are several things to keep in mind when creating a node. To help you, we prepared a [checklist](https://docs.n8n.io/nodes/creating-nodes/node-review-checklist.html) that covers the requirements for creating nodes, from preparation to submission. This will help us be quicker to review and merge your PR. - -## Extend Documentation +## Extend documentation The repository for the n8n documentation on [docs.n8n.io](https://docs.n8n.io) can be found [here](https://github.com/n8n-io/n8n-docs). - ## Contributor License Agreement That we do not have any potential problems later it is sadly necessary to sign a [Contributor License Agreement](CONTRIBUTOR_LICENSE_AGREEMENT.md). That can be done literally with the push of a button.