Files
vtj/AGENTS.md
“chenhuachun” 5f3290faec docs(repository): 新增仓库整体开发与协作指南
- 介绍 VTJ.PRO 项目结构及核心技术栈
- 规范跨包依赖管理和引用方式
- 明确环境配置及依赖安装流程
- 列出常用开发和构建命令及使用建议
- 规定代码风格和类型使用规范
- 说明测试策略和验收流程
- 强调生成物管理及高风险命令禁止范围
- 规范提交与发布流程,阐述提交信息规范与要求
2026-08-11 15:09:13 +08:00

88 lines
5.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AGENTS.md
本文件适用于整个仓库。若子目录以后增加了更具体的 `AGENTS.md`,以距离目标文件最近的说明为准。
## 项目概览
VTJ.PRO 是基于 Vue 3、TypeScript 和 Vite 的 AI 低代码引擎,核心能力包括 DSL 与 Vue SFC 双向转换、设计器、渲染器和多端应用输出。本仓库是 pnpm workspace由 Nx 驱动 Lerna 处理包间依赖和批量任务。
- `packages/`:可发布的基础库、核心模型、解析/生成、渲染、设计器、UI 等 `@vtj/*` 包。
- `platforms/`Web、H5、UniApp 及 PRO 平台集成包。
- `apps/`应用、H5、UniApp、插件、物料等示例或交付工程。
- `dev/`:主要的本地联调入口。
- `create-vtj/`:项目脚手架及模板。
- `docs/`VitePress 文档站和项目文档。
- `scripts/`:仓库维护、同步和发布辅助脚本。
优先在已有包和既有模式中完成修改,不新增重复工具、抽象层或依赖。跨包引用使用包名和已有公开导出,不要通过相对路径穿透其他包的 `src`
## 环境与依赖
- Node.js 必须为 20 或更高版本。
- 使用仓库声明的 pnpm不要生成或提交 `package-lock.json``yarn.lock`
- 首次安装可运行 `pnpm run setup`;依赖已就绪时不要重复安装。
- 新增内部依赖使用 `workspace:~` 或目标包已有的 workspace 范围,并同步更新对应 `package.json`
- 只有需求确实需要时才修改依赖;修改依赖后更新 `pnpm-lock.yaml`
## 开发命令
从仓库根目录运行:
```sh
pnpm run dev # dev/ Web 联调环境
pnpm run dev:uni # dev/ UniApp 联调环境
pnpm run app:dev # apps/app
pnpm run docs:dev # 文档站
pnpm run build # 构建所有非 private 包,耗时较长
pnpm run test # 测试所有非 private 包
pnpm run test:all # 包含 private workspace 的完整测试
```
日常修改优先做定向验证,避免无必要地运行全仓任务:
```sh
pnpm --filter @vtj/core test
pnpm --filter @vtj/designer exec vitest run tests/useOpenApi.test.ts
pnpm --filter @vtj/parser build
pnpm --filter vtj-plugin test
```
包名以对应目录的 `package.json#name` 为准。根目录没有统一的 lint 脚本,不要声称执行过 lint可使用现有 Prettier 配置检查或格式化本次改动文件。
## 代码约定
- 遵循 `.editorconfig``.prettierrc`2 空格、单引号、分号、LF、80 列、无尾随逗号。
- TypeScript 保持类型明确,优先复用仓库已有类型;避免 `any`、无必要的类型断言和重复协议定义。
- Vue 组件沿用相邻文件结构和命名;当前代码通常使用 Vue 3 Composition API 与 TypeScript。
- 可复用公共能力放在所属包内,并从该包的 `src/index.ts` 或既有分层入口导出;不要为了单一调用创建公共抽象。
- 保持 workspace 依赖方向与对应 `package.json` 一致。新增跨包 import 时,确认已声明依赖。
- 用户可见文案保持现有语言和术语;不要顺手大范围改写无关文案或格式。
- 不做无关重构,不覆盖工作区中已有的用户修改。
## 测试与验收
- 测试使用 Vitest通常位于各 workspace 的 `tests/` 下,文件名沿用 `.test.ts``.spec.ts`
- 修改行为或修复缺陷时,在所属包添加或更新最小回归测试,优先覆盖根因和边界条件。
- Vue/DOM 测试沿用对应包的 Vitest 配置和现有 `tests/setup.ts`,不要另建测试框架。
- 至少运行受影响包的定向测试;涉及公开导出、类型、构建配置或跨包依赖时,再运行受影响包的 `build`
- 跨多个基础包的改动应按需运行 `pnpm run test``pnpm run build`。若因耗时或环境限制未运行,交付时明确说明。
- 报告验证结果时列出实际执行的命令和失败原因,不把既有失败描述为本次修改已通过。
## 生成物与高风险命令
不要手工修改或提交构建/缓存产物,包括 `node_modules/``dist/``types/``temp/``coverage/``.nx/``docs/dist/` 及忽略规则中列出的生成目录。
`CHANGELOG.md`、各包 `src/version.ts` 和发布版本通常由 Lerna 发布流程维护;除非任务明确要求发布或改版本,否则不要修改。不要自行运行以下会清理、批量改写、提交、推送或发布的脚本:
- `clean``reset``update``sync`
- `ci``commit`
- `prerelease``patch``minor``publish`
不要提交密钥、令牌、私有服务地址或本地环境文件。涉及网络、文件写入、代码执行和 AI 工具调用时,保留现有校验、错误处理与审批边界。
## 提交与交付
- 除非用户明确要求,不创建提交、不推送、不发布。
- 提交信息遵循 Conventional Commits例如 `fix(parser): 修复数据源解析``feat(agent): 支持附件预览`
- 最终交付说明应包含:修改内容、影响范围、已执行的验证、未验证项或已知风险。