菜单

构建系统和包管理

相关源文件

本文档涵盖了 Langflow 项目的构建系统架构、依赖管理和包结构。它详细介绍了 Python 和前端依赖的管理方式、构建流程的自动化以及使用 uvnpm 等现代工具构建开发工作流程。

有关部署和 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

使用 UV 进行 Python 包管理

Langflow 使用 uv 作为其主要的 Python 包管理器,提供快速的依赖解析和现代 Python 工具。

UV 配置和锁定文件

项目维护单独的 uv.lock 文件用于工作区管理。主锁定文件跟踪所有工作区依赖项,并进行精确的版本锁定。

组件配置文件锁文件目的
根工作区pyproject.tomluv.lock主应用程序依赖项
基础包src/backend/base/pyproject.toml生成核心库依赖项

依赖组

开发依赖项根据 pyproject.tomlsrc/backend/base/pyproject.toml 中进行了组织。

来源: pyproject.toml20-178 src/backend/base/pyproject.toml20-132 uv.lock1-11

UV 工作区源配置

工作区使用本地依赖项和工作区引用

此配置使主 langflow 包在开发过程中能够依赖本地的 langflow-base 包。

来源: pyproject.toml180-185

前端包管理

前端使用 npm 进行依赖管理,并包含一套全面的基于 React 的库和开发工具。

前端依赖架构

来源: src/frontend/package.json5-91 src/frontend/package.json120-148

前端构建脚本

package.json 文件定义了关键的构建和开发脚本。

脚本命令目的
startvite开发服务器
buildvite build生产构建
dev:dockervite --host 0.0.0.0Docker 开发
formatprettier --write代码格式化
type-checktsc --noEmit类型检查

来源: src/frontend/package.json92-100

使用 Makefile 进行构建自动化

该项目使用功能全面的 Makefile 来进行构建自动化、开发工作流和 CI/CD 集成。

构建流程

来源: Makefile37-84 Makefile66-77

Makefile 的主要目标

来源: 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

代码质量与测试集成

构建系统集成了代码质量工具和测试框架

工具目的配置
ruffLinting 和格式化pyproject.toml265-308
mypy类型检查pyproject.toml309-316
pytest单元测试pyproject.toml230-242
coverage测试覆盖率pyproject.toml244-263

来源: Makefile184-204 pyproject.toml230-316

Alembic 数据库迁移集成

Makefile 包含使用 Alembic 的全面数据库迁移命令

  • alembic-revision: 生成新迁移
  • alembic-upgrade: 应用迁移
  • alembic-downgrade: 回滚迁移
  • alembic-current: 显示当前修订版本

来源: Makefile415-442

负载测试基础设施

构建系统包含使用 Locust 的负载测试功能

可配置的参数包括用户数、生成速率、测试时长和 API 端点。

来源: Makefile447-490

软件包发布与分发

构建目标和 Wheel 生成

该项目使用 hatchling 作为构建后端,并具有特定的 Wheel 打包配置

来源: pyproject.toml187-188 src/backend/base/pyproject.toml135-136

发布工作流

来源: Makefile311-409

构建系统为使用现代 Python 和前端工具、自动化工作流和集成质量保证来开发、测试和部署 Langflow 应用程序提供了全面的基础。