用途:指导从零构建 Frappe 自定义应用,适用 v14/v15/v16。
主要能力与流程:
- 决策是否真的需要建应用:仅加字段用 Custom Field + Property Setter;简单自动化(少于 50 行)用 Server/Client Script;复杂业务逻辑、新 DocType、Python 代码或外部系统集成才需建应用。
- 创建结构:cd ~/frappe-bench 后运行 bench new-app my_app,须确认 init.py 内有 version。
- 配置 pyproject.toml(v15+)与 hooks.py,声明 required_apps。注意 frappe/erpnext 不可放入 [project].dependencies。
- modules.txt 定义模块:1-5 个 DocType 用单模块,6-15 用 2-4 个,15+ 按业务域划分。
- 安装与建 DocType:bench --site mysite install-app my_app;bench --site mysite new-doctype "My Document" --module "My App"。
- 添加 hooks:doc_events、调度器、v16 的 extend_doctype_class。
- 编写补丁:放入 patches/v1_0,注册到 patches.txt 的 pre/post_model_sync,须分批处理、每批提交、先在副本测试。
- fixtures 管理:在 hooks.py 配置并过滤,用 bench --site mysite export-fixtures --app my_app 导出。
使用方式:常用命令包括 bench --site mysite migrate(结构变更后)、bench build --app my_app(JS/CSS 变更后)、bench --site mysite clear-cache(Python 变更后)、bench watch、bench restart;测试用 bench --site mysite run-tests --app my_app。
适用场景:需要新 DocType、复杂逻辑或外部集成的 Frappe 定制开发。限制与规则:始终从 bench new-app 开始,勿手建结构;勿在 project 依赖中放 frappe/erpnext;勿在 fixtures 中含事务数据;勿直接改核心 ERPNext 文件;勿在共享 DocType 上无过滤导出;补丁勿在生产未测试运行。其余具体语法与细节暂未提供。