本指南提供了有关如何为 n8n 代码库做出贡献的全面信息。它涵盖了开发设置、贡献工作流程、测试程序和 CI/CD 管道。有关创建自定义节点的信息,请参阅 节点系统文档。
n8n 被组织成一个多包的 monorepo,通过 pnpm workspaces 进行管理。
在设置 n8n 进行开发之前,请确保您具备以下先决条件
# Debian/Ubuntu
apt-get install -y build-essential python
# CentOS
yum install gcc gcc-c++ make
# Windows
npm add -g windows-build-tools
# MacOS
# No additional packages required
要以开发模式启动 n8n
这将自动构建你的代码,重启后端,并在你进行每次更改时刷新前端。
用于生产模式测试
启动带隧道(用于 webhook 测试)的 n8n
来源:CONTRIBUTING.md163-176 packages/cli/bin/n8n1-68
典型的开发工作流程包括以下步骤
提交 PR 到 n8n 时,请遵守以下指南
遵循样式指南:
TypeScript 合规性:
ts-ignore避免重复代码:
测试要求:
拼写错误:
仅提交小型 PR:
命名约定:
新节点:
仅拼写错误的 PR:
n8n 拥有一个全面的测试套件,包括单元测试、代码覆盖率跟踪和端到端测试。
单元测试可以通过以下方式运行
在特定的包文件夹中执行时,它将只运行该包的测试。在 n8n 根文件夹中执行时,它将运行所有包中的所有测试。
如果您进行的更改需要更新 .test.ts.snap 文件,请将 -u 传递给命令,或在监视模式下按 u。
n8n 在 Codecov 上跟踪所有代码的代码覆盖率。当您在本地处理测试时,可以通过设置 COVERAGE_ENABLED 环境变量为 true 来运行测试。
您可以在 coverage 文件夹中查看代码覆盖率,或者使用像 Coverage Gutters 这样的 VSCode 扩展直接在编辑器中可视化覆盖率。
来源:CONTRIBUTING.md261-264 codecov.yml1-69
在第一次运行 E2E 测试之前,您需要安装 Cypress
E2E 测试可以通过以下任一命令启动
pnpm test:e2e:ui:以交互方式启动 n8n 并运行 e2e 测试,使用内置的 UI 代码pnpm test:e2e:dev:以开发模式启动 n8n 并以交互方式运行 e2e 测试pnpm test:e2e:all:启动 n8n 并无头运行 e2e 测试n8n 使用 GitHub Actions 进行持续集成和部署。CI/CD 管道包括用于测试、构建和发布 n8n 的各种工作流。
来源:.github/workflows/ci-master.yml1-81 .github/workflows/ci-pull-requests.yml1-50 .github/workflows/release-create-pr.yml1-72 .github/workflows/release-publish.yml1-220 .github/workflows/docker-images-nightly.yml1-59
当你提交一个 PR 时
GitHub Actions 将会运行
如果 PR 被维护者批准,将触发其他工作流
所有测试必须通过才能合并 PR
来源:.github/workflows/ci-pull-requests.yml1-50 .github/workflows/check-pr-title.yml1-37 .github/workflows/e2e-tests-pr.yml1-80
n8n 使用结构化的发布流程
发布流程由触发 release-create-pr.yml 工作流来启动。
此工作流:
release/${VERSION} 的新分支一旦发布拉取请求被合并,release-publish.yml 工作流将执行以下操作:
来源: CONTRIBUTING.md278-292 .github/workflows/release-create-pr.yml1-72 .github/workflows/release-publish.yml1-220
n8n 支持多种数据库系统,并为每种支持的数据库包含自动化测试
CI 流水线包含针对这些数据库的测试工作流,以确保兼容性。
来源: .github/workflows/ci-postgres-mysql.yml1-230
在您的贡献被合并之前,您需要签署一份贡献者许可协议 (CLA)。这是一个简单的过程
您可以通过 npm 创建社区节点并使其可用。有关构建节点的更多信息,请参阅 节点系统文档。
n8n 文档 docs.n8n.io 的代码库可以在 here 找到。
您可以将您的工作流提交到 n8n 的模板库。n8n 正在开发一个创作者计划,并开发一个模板市场。有关如何提交模板和成为创作者的信息,请参阅 n8n Creator hub。
本项目以及所有参与者都受《行为准则》的约束,该准则可在 CODE_OF_CONDUCT.md 文件中。通过参与,您需要遵守此代码。请将不可接受的行为报告给 jan@n8n.io。