Baserow 开发环境实战:IntelliJ 后端测试、前端 Lint 与虚拟环境配置全指南
2026/9/17 7:32:52 网站建设 项目流程

Baserow 开发环境实战:IntelliJ 后端测试、前端 Lint 与虚拟环境配置全指南

【免费下载链接】baserowBuild databases, automations, apps & agents with AI — no code. Open source platform available on cloud and self-hosted. GDPR, HIPAA, SOC 2 compliant. Best Airtable alternative.项目地址: https://gitcode.com/GitHub_Trending/ba/baserow

本文基于 Baserow 仓库中的官方开发文档 IntelliJ Setup 展开,系统讲解如何用 IntelliJ IDEA 搭建 Baserow 开发环境:一键应用标准模块配置、创建并绑定后端 Python 虚拟环境、启动本地 PostgreSQL/Redis、运行前后端测试,并配置 ESLint 与推荐插件。读完并照做之后,你将能在 IDE 中直接运行和调试全部后端 pytest 测试与前端单元测试,并获得开箱即用的 linter 与自动格式化能力。

1. 前置条件

开始之前,文档假设你具备 git、Python、虚拟环境(virtualenvs)、PostgreSQL 和命令行工具的基础知识,并需要先安装两个命令行工具:

  • just:命令运行器(command runner)。Baserow 所有开发命令都通过根目录 justfile 组织,just直接运行时会按分组列出全部可用命令(just --list)。
  • uv:Python 包管理器。后端的虚拟环境创建(uv venv)与依赖安装(uv lock/uv sync)都由它完成。

从仓库结构看,Baserow 是"多语言单体仓库":backend/是 Python 后端,web-frontend/是 Vue 3 前端,另有premium/enterprise/两个同构的扩展代码树。这一点会直接体现在下面的模块配置文件里——IntelliJ 需要一次性把三套代码都纳入同一个模块,否则补全和跳转都会缺失。

2. 克隆仓库并一键应用标准 IntelliJ 配置

第一步是获取一份干净的仓库副本,克隆 Baserow 仓库(例如git clone https://gitcode.com/GitHub_Trending/ba/baserow.git),然后进入baserow目录:

git clone https://gitcode.com/GitHub_Trending/ba/baserow.git cd baserow

接着执行仓库自带的配置脚本:

./config/intellij/apply_standard_baserow_intellij_config.sh

按提示输入Y并回车,即可把标准配置应用到仓库中。该脚本的实现在 apply_standard_baserow_intellij_config.sh(L1–L21),源码中可以看到几个关键细节:

  • 脚本以set -euo pipefail严格模式运行,任何一步失败都会立即中止;
  • 它会把config/intellij/目录整体cp -a拷贝到仓库根目录(即SCRIPT_DIR/../..),随后删除被一并拷走的脚本自身副本;
  • 因此脚本是幂等且可重复执行的,但会覆盖你已有的 IntelliJ 配置,这也是它先要求输入Y确认的原因。

执行完成后,仓库根目录会多出三个 IntelliJ 模块描述文件,这是整套配置的核心:

根模块 baserow.iml

baserow.iml 把整个仓库声明为一个PYTHON_MODULE类型的项目,继承 JDK 且不设源码目录标记,主要起"项目容器"作用,真正的语言细节由下面的子模块承担。

后端模块 backend.iml

backend.iml 是信息密度最高的一个文件,它决定了 IDE 如何理解 Baserow 的 Python 后端:

  1. Django Facet(L4–L13):把backend/src/baserow标记为 Django 根目录,指定 Django settings 为config/settings/dev.py、管理脚本为manage.py。这让 IDE 获得 Django 模板高亮、settings 跳转等能力。注意doNotUseTestRunner被设为true——它明确要求不要用 Django 自带的测试运行器(Baserow 后端用的是 pytest,见下)。
  2. 源码根目录(L15–L32):
    • backend/src是普通源码根(isTestSource="false");
    • backend/tests被标记为测试源码根isTestSource="true"),保证测试文件中的 import 路径解析正确;
    • 同时把.pytest_cachesrc/baserow.egg-info等目录排除在外;
    • 关键点:它额外声明了premium/backend/srcpremium/backend/testsenterprise/backend/srcenterprise/backend/tests四组内容根。也就是说,即使你只打开仓库根目录,premium 与 enterprise 扩展后端代码的跳转、补全、类型检查也和主后端一样完整。
  3. 测试运行器(L48–L50):PROJECT_TEST_RUNNER设为pytest。因此在 IDE 里右键"Run Tests"跑的是 pytest 而非 Django test runner,与backend/pytest.ini的约定一致。
  4. SDK 引用(L33):orderEntry引用了一个固定名称的 SDK(Python 3.x (baserow)形式的命名)。这个命名约定非常重要,后面配置 SDK 时会用到。

前端模块 web-frontend.iml

web-frontend.iml 把web-frontend声明为WEB_MODULE,并且同样做了一件根模块做不到的事:把premium/web-frontend/modules(源码)、premium/web-frontend/test(测试源码)、enterprise/web-frontend/modulesenterprise/web-frontend/test以及主前端的modulestest目录全部纳入模块内容。这样前端在 IDE 中打开时,三棵代码树的 Vue/JS 文件都能被正确识别,test目录会被按测试源码处理。

3. 打开项目并启用 Python 插件

  1. 打开 IntelliJ,在 "Welcome to IntelliJ IDEA" 欢迎页点击Open,选择你刚才克隆的baserow文件夹。
  2. 确认已安装/启用Python IntelliJ 插件(官方插件目录中的 Python 插件,免费随 Ultimate 发行或可从插件市场搜索安装)。

4. 创建后端虚拟环境并在 IntelliJ 中绑定 SDK

这是整篇指南最容易出错的一步,请严格按顺序执行。

4.1 用 just 初始化后端

在仓库根目录运行:

just b init

b是根 justfile 中定义的backend别名(L476–L480):它实际执行just --justfile backend/justfile --working-directory backend init,即把工作目录切到backend/后运行后端自己的 justfile。查看 backend/justfile(L117、L148–L156)可以看到init的完整链路:

init: _setup-env _create-venv code-runtime uv lock uv sync
  • _create-venvuv venv --python <python_version> .venv项目根目录创建虚拟环境.venv/(若已存在则跳过);
  • _setup-env在根目录没有.env.local时会从.env.local-dev.example拷贝一份;
  • code-runtime会构建本地 Wasmtime + QuickJS 代码执行运行时的构件(后端自定义代码字段依赖它);
  • 最后uv lock+uv sync依据 uv.lock 锁定并安装全部 Python 依赖。

完成后你会得到.venv/bin/python,这就是下一步要绑定给 IDE 的解释器。

版本前提:根据 docs/installation/supported.md,Baserow 当前版本要求 Python>= 3.14.0(测试版本 3.14.6)。因此.venv里的解释器必须是 3.14 系列。

4.2 在 IntelliJ 中绑定模块 SDK

回到 IntelliJ:

  1. F4,或右键顶层baserow文件夹选择Module Settings
  2. backend模块的 SDK 指向上一步创建的.venv/bin/python
  3. 此时多半会看到一个 IntelliJ 自动探测生成的、显示为红色(未解析)的 SDK(名称形如Python 3.14 (baserow)或旧版本占位名)。文档建议先删除它,再手动添加:
    1. F4 →SDK
    2. 点击+
    3. Add New Python SDKExisting Interpreter
    4. 找到并选择虚拟环境里的bin/python可执行文件(.venv/bin/python);
    5. 把这个新 SDK 命名为Python 3.14 (baserow)

最后一点是有意的工程约定:backend.iml通过固定名称引用 SDK,把 SDK 命名成统一约定的名字,可以避免 IDE 在同步时意外改写backend.iml内容,保持该文件在 git 中的稳定性——这也解释了为什么config/intellij/下的.iml文件值得提交进仓库、作为团队共享的标准配置。

5. 准备数据库与 Redis

后端测试与运行都依赖 PostgreSQL(Baserow 以 PostgreSQL 为主存储,并用到 pgvector 扩展)与 Redis。文档给出两条路线:

路线一(推荐):用 Docker 起依赖服务

just dc-dev up -d db redis

dc-dev是根 justfile 的 docker compose 封装(justfile L555–L608):它会自动从.env.docker-dev.example生成.env.docker-dev、导出当前UID/GID给 compose 的user:指令,然后执行docker compose --env-file .env.docker-dev -f docker-compose.yml -f docker-compose.dev.yml up -d db redis。首次使用前可能需要先just dc-dev build构建 dev 镜像。

路线二:本地安装 PostgreSQL

参照 PostgreSQL 官方安装文档安装后,创建 Baserow 专用用户:

CREATE USER baserow WITH ENCRYPTED PASSWORD 'baserow'; ALTER USER baserow CREATEDB;

CREATEDB权限是必需的——每个测试运行都会创建独立的测试数据库,pytest 夹具需要建库权限。

6. 验证后端测试可以运行

数据库就绪后,从 IntelliJ 中直接运行一个后端测试文件作为冒烟验证,例如 test_core_models.py:右键该文件选择 Run,或打开后使用 gutter 里的运行图标。它能跑通,说明三件事同时成立:

  • 模块 SDK 已正确指向.venv,依赖可导入;
  • backend/tests的测试源码根与 pytest 测试运行器(backend.iml中的PROJECT_TEST_RUNNER=pytest)生效;
  • 测试能连接上baserow用户对应的 PostgreSQL 并自动建库。

如果测试报错指向数据库连接,优先回到第 5 节检查dc-dev容器是否仍在运行(just dc-dev ps)。

7. 配置前端开发环境

后端验证通过后,按 intellij-setup.md 的前端步骤继续:

  1. 切换目录到前端工程:

    cd baserow/web-frontend
  2. 安装依赖:

    just f install

    f同样来自根 justfile 的frontend别名(L485–L489),实际是进入web-frontend/后运行其 justfile;web-frontend/justfile 中的install配方(L71–L72)就是一句yarn install。没有 yarn 的话,可先安装 nvm 或 fnm 之类的 Node 版本管理器,再按 Yarn 官方说明安装。Node 版本注意just f install要求 Node.js>= 24.0.0(见 docs/installation/supported.md),请确认版本管理器激活的是该系列版本。

  3. 如果yarn install后 IntelliJ 弹出信任提示,选择Trust Project——前端工程包含 postinstall 脚本,不信任会导致脚本不执行。

  4. 打开Settings,搜索并进入Node.js and NPM类别,确认 Node interpreter 指向你期望的 node 可执行文件(建议与第 2 步中yarn所用的 Node 一致)。

  5. 从 IntelliJ 里运行一个web-frontend的单元测试,确认前端测试链路可用。

8. 配置 ESLint

前端代码质量由仓库根目录的 eslint.config.mjs 统一管理,IntelliJ 默认走 "Local ESLint" 自动检测,这里需要手动切换:

  1. 打开Settings,搜索eslint

  2. 切换为Manual ESLint configuration

  3. ESLint package指向上一步yarn install生成的:

    baserow/web-frontend/node_modules/eslint

配置完成后,modules/test/以及 premium/enterprise 前端树(它们已被web-frontend.iml纳入模块)中的 Vue/JS 文件都会获得基于仓库统一配置的实时报错与 Quick-Fix。命令行侧的对照命令是just f lint(eslint + stylelint + prettier 三件套,见 web-frontend/justfile 的 lint 分组)。

9. 推荐插件

文档还列出了五个能显著提升日常效率的插件(安装入口为 IntelliJ 插件市场,按名称搜索即可):

插件用途
BlackConnect对修改过的文件自动运行 black。文档建议配置一个开机自启的blackd守护进程,把格式化摩擦降到最低(Baserow 后端 Python 格式化标准即 black)
Database Navigator在 IDE 内直接浏览本地 PostgreSQL,方便查看测试库与迁移产物
IntelliVue补充 Vue 文件的高亮与导航能力
Key Promoter X在你用鼠标完成某操作时提示对应快捷键,帮助养成键盘流
Vue.jsVue 单文件组件的官方语言支持

10. 小结:这套配置背后的工程约定

回顾整个流程,Baserow 的 IntelliJ 方案可以归纳为三条约定:

  1. 标准配置入库config/intellij/下的.iml文件 + 应用脚本(config/intellij)让每个新成员一条命令得到一致的模块、源码根与测试运行器设置,避免"在我机器上是好的"式的环境漂移;
  2. 命令全部收敛到 justfilejust b initjust f installjust dc-dev up -d db redis分别代理到后端 justfile、前端 justfile 和 docker compose 封装(justfile L476–L489、L555–L608),IDE 内触发测试/运行配置时,底层解释器与依赖始终来自同一份uv.lock/yarn.lock锁定的环境;
  3. 三棵代码树同等对待backend.imlweb-frontend.imlpremiumenterprise的源码/测试目录声明为正式内容根,因此插件开发者与核心开发者获得相同的 IDE 体验。

完成以上步骤后,你的 IntelliJ 就具备了 Baserow 官方文档承诺的全部能力:直接运行与调试后端 pytest 测试和前端单元测试,Python 侧有 black 自动格式化、JS/Vue 侧有基于仓库统一配置的 ESLint 检查。如果后续需要更完整的本地运行环境(backend + celery + 前端 + storybook 全量启动),可继续阅读 running-the-dev-env-locally.md 与 running-tests.md。

【免费下载链接】baserowBuild databases, automations, apps & agents with AI — no code. Open source platform available on cloud and self-hosted. GDPR, HIPAA, SOC 2 compliant. Best Airtable alternative.项目地址: https://gitcode.com/GitHub_Trending/ba/baserow

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询