n8n 项目结构说明

n8n 是一个开源的工作流自动化平台,允许技术团队通过可视化界面或代码来创建自动化工作流。以下是该项目的主要组成部分和文件结构说明。


根目录文件

核心配置文件

  • package.json: 项目的配置文件,定义了项目的依赖、脚本命令和工作区设置
  • pnpm-workspace.yaml: pnpm 工作区配置,定义了哪些目录包含在工作区中
  • turbo.json: Turbo 工具配置,用于优化构建过程
  • tsconfig.json: TypeScript 配置文件
  • vitest.workspace.ts: Vitest 测试框架的工作区配置

文档文件

  • README.md: 项目介绍和快速入门指南
  • LICENSE.md: 项目许可证(公平代码许可证)
  • LICENSE_EE.md: n8n 企业版许可证
  • CONTRIBUTING.md: 贡献指南
  • CHANGELOG.md: 版本变更日志
  • SECURITY.md: 安全政策

配置文件

  • .npmrc: npm 配置文件
  • .gitignore: Git 忽略文件配置
  • .prettierignore.prettierrc.js: 代码格式化配置
  • biome.jsonc: Biome 代码检查工具配置
  • lefthook.yml: Git 钩子配置工具
  • jest.config.js: Jest 测试框架配置

其他重要文件

  • pnpm-lock.yaml: pnpm 依赖锁定文件
  • renovate.json: Renovate 依赖更新工具配置

主要目录

packages/ - 核心代码包

n8n 采用 monorepo 结构,将不同功能模块划分为多个包:

核心包
  • packages/workflow/: 工作流核心逻辑,包括节点执行、连接处理等基础功能
  • packages/core/: 核心业务逻辑,如凭证管理、执行处理等
  • packages/cli/: 命令行接口,用于启动和管理 n8n 实例
前端相关
  • packages/frontend/: 前端相关代码
  • packages/@n8n/design-system/: UI 设计系统组件库
  • packages/editor-ui/: 工作流编辑器界面
节点和集成
  • packages/nodes-base/: 基础节点实现,包括 HTTP、文件操作、数据库等常用节点
  • packages/@n8n/nodes-langchain/: 基于 LangChain 的 AI 节点
  • packages/node-dev/: 节点开发工具
其他功能包
  • packages/@n8n/api-types/: API 类型定义
  • packages/@n8n/db/: 数据库相关功能
  • packages/@n8n/utils/: 工具函数集合
  • packages/@n8n/permissions/: 权限管理
  • packages/@n8n/errors/: 错误处理
  • packages/@n8n/di/: 依赖注入实现
  • packages/@n8n/config/: 配置管理
  • packages/@n8n/task-runner/: 任务运行器
  • packages/extensions/: 扩展功能

cypress/ - 端到端测试

  • composables/: 测试中使用的组合函数
  • e2e/: 端到端测试用例
  • fixtures/: 测试数据文件
  • pages/: 页面对象模型,用于测试中的页面交互
  • support/: 测试支持文件和命令扩展
  • cypress.config.js: Cypress 配置文件

docker/ - Docker 镜像构建

  • images/n8n/: 主 n8n 镜像 Dockerfile 和相关文件
  • images/n8n-base/: 基础镜像
  • images/runners/: 任务运行器镜像

scripts/ - 构建和开发脚本

包含项目构建、打包、开发环境设置等脚本:

  • build-n8n.mjs: 构建 n8n 应用
  • dockerize-n8n.mjs: 创建 Docker 镜像
  • format.mjs: 代码格式化脚本
  • generate-third-party-licenses.mjs: 生成第三方许可证信息

patches/ - 依赖补丁

包含对第三方依赖包的补丁文件,用于修复或修改依赖包的行为。


项目特点

  1. Monorepo 架构: 使用 pnpm 工作区管理多个相关包
  2. 模块化设计: 功能划分清晰,便于维护和扩展
  3. TypeScript: 完全使用 TypeScript 开发,提供类型安全
  4. 测试覆盖: 包含单元测试和端到端测试
  5. Docker 支持: 提供完整的 Docker 部署方案
  6. 企业级功能: 支持权限管理、SSO 等企业功能

开发相关命令

package.json 中定义了许多有用的脚本:

  • dev: 启动开发环境
  • build: 构建项目
  • test: 运行测试
  • lint: 代码检查
  • format: 代码格式化

这些命令使用 Turbo 工具进行优化,可以并行执行多个包的相关任务。


by 久违 2025.10.22

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐