本文档涵盖了 Langflow 项目的构建系统架构、依赖管理和包结构。它详细介绍了 Python 和前端依赖的管理方式、构建流程的自动化以及使用 uv 和 npm 等现代工具构建开发工作流程。
有关部署和 Docker 配置的信息,请参阅 部署和配置。有关 CI/CD 管道和测试基础设施的详细信息,请参阅 测试和 CI/CD 管道。
Langflow 采用单仓库工作区结构,为基础库和主应用程序提供单独的包。该项目配置为 uv 工作区,包含两个主要组件。
工作区配置在根目录的 pyproject.toml 文件中定义,工作区成员在 pyproject.toml184-185中指定。
来源: pyproject.toml184-185 src/backend/base/pyproject.toml1-255
来源: pyproject.toml20-130 src/backend/base/pyproject.toml20-93 src/frontend/package.json5-91
Langflow 使用 uv 作为其主要的 Python 包管理器,提供快速的依赖解析和现代 Python 工具。
项目维护单独的 uv.lock 文件用于工作区管理。主锁定文件跟踪所有工作区依赖项,并进行精确的版本锁定。
| 组件 | 配置文件 | 锁文件 | 目的 |
|---|---|---|---|
| 根工作区 | pyproject.toml | uv.lock | 主应用程序依赖项 |
| 基础包 | src/backend/base/pyproject.toml | 生成 | 核心库依赖项 |
开发依赖项根据 pyproject.toml 和 src/backend/base/pyproject.toml 中进行了组织。
来源: pyproject.toml20-178 src/backend/base/pyproject.toml20-132 uv.lock1-11
工作区使用本地依赖项和工作区引用
此配置使主 langflow 包在开发过程中能够依赖本地的 langflow-base 包。
前端使用 npm 进行依赖管理,并包含一套全面的基于 React 的库和开发工具。
来源: src/frontend/package.json5-91 src/frontend/package.json120-148
package.json 文件定义了关键的构建和开发脚本。
| 脚本 | 命令 | 目的 |
|---|---|---|
start | vite | 开发服务器 |
build | vite build | 生产构建 |
dev:docker | vite --host 0.0.0.0 | Docker 开发 |
format | prettier --write | 代码格式化 |
type-check | tsc --noEmit | 类型检查 |
来源: src/frontend/package.json92-100
该项目使用功能全面的 Makefile 来进行构建自动化、开发工作流和 CI/CD 集成。
来源: Makefile37-84 Makefile66-77
来源: Makefile24-491
Makefile 提供了几个管理依赖项的命令:
install_backend:使用 uv sync --frozen 安装 Python 依赖项。install_frontend:使用 npm install 安装前端依赖项。reinstall_backend:使用 uv sync -n --reinstall --frozen 强制重新安装。add:将新依赖项添加到不同的组(main、base、devel)。来源: Makefile54-125
环境设置脚本会在不存在时创建一个 .env 文件,如 scripts/setup/setup_env.sh 中所示。
来源: Makefile37-84 Makefile252-253 scripts/setup/setup_env.sh1-11
构建系统集成了代码质量工具和测试框架
| 工具 | 目的 | 配置 |
|---|---|---|
ruff | Linting 和格式化 | pyproject.toml265-308 |
mypy | 类型检查 | pyproject.toml309-316 |
pytest | 单元测试 | pyproject.toml230-242 |
coverage | 测试覆盖率 | pyproject.toml244-263 |
来源: Makefile184-204 pyproject.toml230-316
Makefile 包含使用 Alembic 的全面数据库迁移命令
alembic-revision: 生成新迁移alembic-upgrade: 应用迁移alembic-downgrade: 回滚迁移alembic-current: 显示当前修订版本来源: Makefile415-442
构建系统包含使用 Locust 的负载测试功能
可配置的参数包括用户数、生成速率、测试时长和 API 端点。
来源: Makefile447-490
该项目使用 hatchling 作为构建后端,并具有特定的 Wheel 打包配置
来源: pyproject.toml187-188 src/backend/base/pyproject.toml135-136
来源: Makefile311-409
构建系统为使用现代 Python 和前端工具、自动化工作流和集成质量保证来开发、测试和部署 Langflow 应用程序提供了全面的基础。