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 后端:
- Django Facet(L4–L13):把
backend/src/baserow标记为 Django 根目录,指定 Django settings 为config/settings/dev.py、管理脚本为manage.py。这让 IDE 获得 Django 模板高亮、settings 跳转等能力。注意doNotUseTestRunner被设为true——它明确要求不要用 Django 自带的测试运行器(Baserow 后端用的是 pytest,见下)。 - 源码根目录(L15–L32):
backend/src是普通源码根(isTestSource="false");backend/tests被标记为测试源码根(isTestSource="true"),保证测试文件中的 import 路径解析正确;- 同时把
.pytest_cache、src/baserow.egg-info等目录排除在外; - 关键点:它额外声明了
premium/backend/src、premium/backend/tests、enterprise/backend/src、enterprise/backend/tests四组内容根。也就是说,即使你只打开仓库根目录,premium 与 enterprise 扩展后端代码的跳转、补全、类型检查也和主后端一样完整。
- 测试运行器(L48–L50):
PROJECT_TEST_RUNNER设为pytest。因此在 IDE 里右键"Run Tests"跑的是 pytest 而非 Django test runner,与backend/pytest.ini的约定一致。 - 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/modules、enterprise/web-frontend/test以及主前端的modules与test目录全部纳入模块内容。这样前端在 IDE 中打开时,三棵代码树的 Vue/JS 文件都能被正确识别,test目录会被按测试源码处理。
3. 打开项目并启用 Python 插件
- 打开 IntelliJ,在 "Welcome to IntelliJ IDEA" 欢迎页点击Open,选择你刚才克隆的
baserow文件夹。 - 确认已安装/启用Python IntelliJ 插件(官方插件目录中的 Python 插件,免费随 Ultimate 发行或可从插件市场搜索安装)。
4. 创建后端虚拟环境并在 IntelliJ 中绑定 SDK
这是整篇指南最容易出错的一步,请严格按顺序执行。
4.1 用 just 初始化后端
在仓库根目录运行:
just b initb是根 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-venv用uv 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:
- 按F4,或右键顶层
baserow文件夹选择Module Settings; - 把
backend模块的 SDK 指向上一步创建的.venv/bin/python; - 此时多半会看到一个 IntelliJ 自动探测生成的、显示为红色(未解析)的 SDK(名称形如
Python 3.14 (baserow)或旧版本占位名)。文档建议先删除它,再手动添加:- F4 →SDK;
- 点击+;
- Add New Python SDK→Existing Interpreter;
- 找到并选择虚拟环境里的
bin/python可执行文件(.venv/bin/python); - 把这个新 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 redisdc-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 的前端步骤继续:
切换目录到前端工程:
cd baserow/web-frontend安装依赖:
just f installf同样来自根 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),请确认版本管理器激活的是该系列版本。如果
yarn install后 IntelliJ 弹出信任提示,选择Trust Project——前端工程包含 postinstall 脚本,不信任会导致脚本不执行。打开Settings,搜索并进入Node.js and NPM类别,确认 Node interpreter 指向你期望的 node 可执行文件(建议与第 2 步中
yarn所用的 Node 一致)。从 IntelliJ 里运行一个
web-frontend的单元测试,确认前端测试链路可用。
8. 配置 ESLint
前端代码质量由仓库根目录的 eslint.config.mjs 统一管理,IntelliJ 默认走 "Local ESLint" 自动检测,这里需要手动切换:
打开Settings,搜索
eslint;切换为Manual ESLint configuration;
将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.js | Vue 单文件组件的官方语言支持 |
10. 小结:这套配置背后的工程约定
回顾整个流程,Baserow 的 IntelliJ 方案可以归纳为三条约定:
- 标准配置入库:
config/intellij/下的.iml文件 + 应用脚本(config/intellij)让每个新成员一条命令得到一致的模块、源码根与测试运行器设置,避免"在我机器上是好的"式的环境漂移; - 命令全部收敛到 justfile:
just b init、just f install、just dc-dev up -d db redis分别代理到后端 justfile、前端 justfile 和 docker compose 封装(justfile L476–L489、L555–L608),IDE 内触发测试/运行配置时,底层解释器与依赖始终来自同一份uv.lock/yarn.lock锁定的环境; - 三棵代码树同等对待:
backend.iml与web-frontend.iml把premium与enterprise的源码/测试目录声明为正式内容根,因此插件开发者与核心开发者获得相同的 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),仅供参考