149 lines
4.3 KiB
Markdown
149 lines
4.3 KiB
Markdown
|
|
# MERN全栈开发插件
|
|||
|
|
|
|||
|
|
`MERN` `MongoDB` `Express` `React` `Node.js` `Claude Code` `插件` `测试生成` `代码审查`
|
|||
|
|
|
|||
|
|
# MERN Ninja
|
|||
|
|
|
|||
|
|
> 面向 [Claude Code](https://claude.ai/claude-code) 的 MERN 全栈精通工具
|
|||
|
|
|
|||
|
|
一个为 Claude Code 提供 MongoDB、Express、React 和 Node.js 开发专项技能的插件。
|
|||
|
|
|
|||
|
|
## 安装
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 第一步:添加市场(仅需一次)
|
|||
|
|
/plugin marketplace add 9tykeshav/mern-ninja-marketplace
|
|||
|
|
|
|||
|
|
# 第二步:安装插件
|
|||
|
|
/plugin install mern-ninja@mern-ninja-marketplace
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 技能
|
|||
|
|
|
|||
|
|
### `mern-ninja:backend-test-writer`
|
|||
|
|
|
|||
|
|
以智能默认值、零配置方式生成全面的后端测试。
|
|||
|
|
|
|||
|
|
**直接说:**
|
|||
|
|
```
|
|||
|
|
为我的用户路由生成测试
|
|||
|
|
为认证服务编写测试
|
|||
|
|
为 User 模型创建测试
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**功能说明:**
|
|||
|
|
|
|||
|
|
| 文件类型 | 测试类型 | 方式 |
|
|||
|
|
|----------|----------|------|
|
|||
|
|
| 路由/控制器 | 集成测试 | Supertest + mongodb-memory-server |
|
|||
|
|
| 服务 | 单元测试 | Mock 依赖 |
|
|||
|
|
| 模型 | 单元测试 | 校验、方法、toJSON |
|
|||
|
|
| 中间件 | 单元测试 | Mock req/res/next |
|
|||
|
|
| 工具函数 | 单元测试 | 纯函数测试 |
|
|||
|
|
|
|||
|
|
**特性:**
|
|||
|
|
- 自动检测测试框架(Jest/Vitest/Mocha)
|
|||
|
|
- 在生成新测试前分析现有测试的覆盖缺口
|
|||
|
|
- 为每个测试用例标注优先级(P0/P1/P2)
|
|||
|
|
- 针对特定领域的边界情况(日期 → 夏令时/时区,金额 → 精度)
|
|||
|
|
- 内置 Setup/Teardown 样板代码
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### `mern-ninja:code-reviewer`
|
|||
|
|
|
|||
|
|
从安全、性能和最佳实践角度审查 MERN 全栈代码。
|
|||
|
|
|
|||
|
|
**直接说:**
|
|||
|
|
```
|
|||
|
|
审查我的认证代码
|
|||
|
|
检查这个 Express API 的安全问题
|
|||
|
|
审计这个 MongoDB Schema
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**审查优先级:**
|
|||
|
|
|
|||
|
|
| 优先级 | 关注点 |
|
|||
|
|
|--------|--------|
|
|||
|
|
| 1. 安全 | 注入攻击、XSS、认证缺陷、密钥泄露、CORS |
|
|||
|
|
| 2. 性能 | N+1 查询、重复渲染、阻塞操作 |
|
|||
|
|
| 3. 最佳实践 | 错误处理、异步模式、资源清理 |
|
|||
|
|
| 4. 架构 | API 设计、状态同步、类型安全 |
|
|||
|
|
|
|||
|
|
**示例输出:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
# MERN 代码审查
|
|||
|
|
|
|||
|
|
## 摘要
|
|||
|
|
- 已审查文件:5
|
|||
|
|
- 问题:2 个严重,3 个重要,5 条建议
|
|||
|
|
|
|||
|
|
## 严重(必须修复)
|
|||
|
|
### [C1] 安全:登录接口存在 NoSQL 注入
|
|||
|
|
**文件:** `api/auth/login.js:24`
|
|||
|
|
**原因:** 用户输入直接传入查询
|
|||
|
|
**修复:** 使用显式字段匹配
|
|||
|
|
|
|||
|
|
## 做得好的地方
|
|||
|
|
- JWT 刷新流程正确
|
|||
|
|
- 错误响应格式一致
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### `mern-ninja:mongodb-query-patterns`
|
|||
|
|
|
|||
|
|
以数据流优先的方式编写可扩展的 MongoDB/Mongoose 查询。
|
|||
|
|
|
|||
|
|
**以下情况会自动触发:**
|
|||
|
|
```
|
|||
|
|
编写新的 Mongoose 查询
|
|||
|
|
在服务之间传递数据
|
|||
|
|
构建读写 MongoDB 的接口
|
|||
|
|
在可传递文档的地方传递了 ID
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**核心理念:** 最好的查询是根本不发出的查询。在调用栈中传递文档——不要重复获取调用方已经拥有的数据。
|
|||
|
|
|
|||
|
|
**涵盖的模式:**
|
|||
|
|
|
|||
|
|
| 模式 | 防止的问题 |
|
|||
|
|
|------|-----------|
|
|||
|
|
| 在服务间传递数据 | 同一文档在服务边界被重复查询 3-4 次 |
|
|||
|
|
| 使用 `$in` + Map 批量处理 | 每条记录触发一次查询的 N+1 循环 |
|
|||
|
|
| `.select()` + `.lean()` | 读路径上携带 Mongoose 开销的全文档查询 |
|
|||
|
|
| 避免对列表使用 `.populate()` | 隐藏在整洁 API 背后的隐式 N+1 查询 |
|
|||
|
|
| 直接使用 `updateOne` | 简单字段更新的"查询-修改-保存"往返 |
|
|||
|
|
| 使用 `bulkWrite` | 顺序执行的更新循环 |
|
|||
|
|
| 提升公共查询 | if/else 分支中的重复查询 |
|
|||
|
|
| 为过滤字段建立索引 | 全集合扫描(COLLSCAN) |
|
|||
|
|
|
|||
|
|
**包含:** 提交前检查清单、常见错误对照表,以及"每条查询都必须自证其存在"的决策框架。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 参考指南
|
|||
|
|
|
|||
|
|
插件内置约 1500 行精心整理的最佳实践:
|
|||
|
|
|
|||
|
|
| 指南 | 内容 |
|
|||
|
|
|------|------|
|
|||
|
|
| `security.md` | OWASP Top 10、MERN 特有漏洞 |
|
|||
|
|
| `react.md` | Hooks、重复渲染、安全、测试 |
|
|||
|
|
| `nodejs.md` | 异步模式、事件循环、内存管理 |
|
|||
|
|
| `express.md` | 中间件、认证、错误处理 |
|
|||
|
|
| `mongodb.md` | Schema 设计、索引、查询 |
|
|||
|
|
| `fullstack.md` | API 设计、认证流程、状态同步 |
|
|||
|
|
| `test-patterns.md` | 按文件类型分类的完整测试示例 |
|
|||
|
|
| `test-setup.md` | Jest 配置、测试夹具、Mock |
|
|||
|
|
|
|||
|
|
## 路线图
|
|||
|
|
|
|||
|
|
- [ ] `mern-ninja:scaffolder` – 生成 MERN 脚手架
|
|||
|
|
- [ ] `mern-ninja:migrator` – 数据库迁移辅助工具
|
|||
|
|
- [ ] `mern-ninja:frontend-test-writer` – React 组件测试
|
|||
|
|
|
|||
|
|
## 许可证
|
|||
|
|
|
|||
|
|
MIT
|