@devflow-tools/plugin-nextjs 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ import type { DevFlowPlugin } from "@devflow-tools/sdk";
2
+ export declare const nextjsPlugin: DevFlowPlugin;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,eAAO,MAAM,YAAY,EAAE,aAmI1B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,128 @@
1
+ export const nextjsPlugin = {
2
+ meta: {
3
+ name: "nextjs",
4
+ version: "0.1.0",
5
+ description: "Next.js 专家 — App Router、SSR/SSG/ISR、Server Components、Middleware、部署",
6
+ icon: "▲",
7
+ tags: ["frontend", "nextjs", "react", "ssr", "server-components"],
8
+ },
9
+ knowledge: {
10
+ sources: [
11
+ {
12
+ name: "nextjs-docs",
13
+ urls: [
14
+ "https://nextjs.org/docs",
15
+ "https://nextjs.org/docs/app/building-your-application",
16
+ "https://nextjs.org/docs/app/api-reference",
17
+ ],
18
+ pluginName: "nextjs",
19
+ version: "14.2.0",
20
+ },
21
+ ],
22
+ },
23
+ memory: {
24
+ project: {
25
+ stack: ["Next.js 14", "App Router", "React Server Components", "Vercel"],
26
+ conventions: [
27
+ { key: "components", value: "组件默认 Server Components,需要交互才加 'use client'", source: "manual", confidence: 0.9 },
28
+ { key: "routing", value: "使用 App Router 文件系统路由(page.tsx/layout.tsx/loading.tsx/error.tsx)", source: "manual", confidence: 0.9 },
29
+ { key: "fetching", value: "服务端数据获取使用 fetch + React cache(),客户端使用 SWR/React Query", source: "manual", confidence: 0.85 },
30
+ { key: "rendering", value: "静态页面用 generateStaticParams + ISR,动态页面用 SSR", source: "manual", confidence: 0.85 },
31
+ ],
32
+ },
33
+ global: [
34
+ {
35
+ id: "nextjs:app-router",
36
+ source: "nextjs",
37
+ title: "App Router 核心概念",
38
+ content: "App Router 基于文件系统:page.tsx(页面)、layout.tsx(共享布局)、loading.tsx(加载状态)、error.tsx(错误边界)、not-found.tsx(404)。布局嵌套且保持状态。路由组用 (folder) 不影响 URL。",
39
+ embedding: [],
40
+ },
41
+ {
42
+ id: "nextjs:server-components",
43
+ source: "nextjs",
44
+ title: "Server Components 模式",
45
+ content: "默认所有组件是 Server Component。use client 声明客户端边界。Server Component 可以 async/await 直接查询数据库。客户端组件通过 props 从服务端组件接收数据。减少客户端 JS 体积。",
46
+ embedding: [],
47
+ },
48
+ {
49
+ id: "nextjs:caching-strategies",
50
+ source: "nextjs",
51
+ title: "Next.js 缓存策略",
52
+ content: "四种缓存:Request Memoization(fetch 去重)、Data Cache(fetch 持久缓存)、Full Route Cache(静态渲染缓存)、Router Cache(客户端路由缓存)。revalidate/export const dynamic 控制缓存行为。",
53
+ embedding: [],
54
+ },
55
+ {
56
+ id: "nextjs:middleware-edge",
57
+ source: "nextjs",
58
+ title: "Middleware 与 Edge Runtime",
59
+ content: "middleware.ts 在请求到达前执行(Edge Runtime)。用于认证重定向、A/B 测试、国际化路由、bot 保护。不能直接访问数据库(Edge 限制)。使用 matcher 配置匹配路径。",
60
+ embedding: [],
61
+ },
62
+ ],
63
+ },
64
+ workflow: {
65
+ steps: [],
66
+ templates: [
67
+ {
68
+ name: "new-page",
69
+ description: "新建 Next.js 页面(路由 + 数据获取 + 渲染策略)",
70
+ version: "1.0.0",
71
+ steps: [
72
+ { id: "determine-rendering", description: "确定渲染策略(SSG/SSR/ISR 选型)", type: "llm", timeout: 10000 },
73
+ { id: "create-route", description: "创建 App Router 路由目录和 page.tsx", type: "simple", depends: ["determine-rendering"], timeout: 5000 },
74
+ { id: "create-layout", description: "创建 layout.tsx(共享布局 + metadata)", type: "llm", depends: ["create-route"], timeout: 10000 },
75
+ { id: "add-loading-error", description: "添加 loading.tsx 和 error.tsx", type: "llm", depends: ["create-route"], timeout: 10000 },
76
+ { id: "implement-data-fetching", description: "实现数据获取(Server Component 直接 fetch 或 generateStaticParams)", type: "llm", depends: ["determine-rendering", "create-route"], timeout: 15000 },
77
+ { id: "type-check", description: "TypeScript 类型检查", type: "simple", depends: ["implement-data-fetching"], timeout: 15000 },
78
+ { id: "build-verify", description: "next build 验证无错误", type: "simple", depends: ["type-check"], timeout: 30000 },
79
+ ],
80
+ triggers: [{ type: "cli", command: "new:page" }, { type: "mcp", tool: "new_page" }],
81
+ },
82
+ {
83
+ name: "migrate-pages-to-app",
84
+ description: "Pages Router → App Router 迁移:路由映射 → 数据获取 → 渐进迁移",
85
+ version: "1.0.0",
86
+ steps: [
87
+ { id: "inventory-pages", description: "盘点所有 Pages Router 页面(路由/数据获取/API Routes)", type: "simple", timeout: 10000 },
88
+ { id: "map-routes", description: "映射路由到 App Router 结构(page.tsx/layout.tsx)", type: "llm", depends: ["inventory-pages"], timeout: 15000 },
89
+ { id: "migrate-data-fetching", description: "迁移数据获取(getServerSideProps → async component、getStaticProps → generateStaticParams)", type: "llm", depends: ["map-routes"], timeout: 20000 },
90
+ { id: "add-loading-states", description: "添加 loading.tsx 和 Suspense 边界", type: "llm", depends: ["migrate-data-fetching"], timeout: 15000 },
91
+ { id: "migrate-api-routes", description: "迁移 API Routes 到 Route Handlers(route.ts)", type: "llm", depends: ["map-routes"], timeout: 15000 },
92
+ { id: "build-test", description: "构建验证 + 路由测试", type: "simple", depends: ["add-loading-states", "migrate-api-routes"], timeout: 30000 },
93
+ ],
94
+ triggers: [{ type: "cli", command: "migrate:app-router" }],
95
+ },
96
+ {
97
+ name: "bug-diagnosis",
98
+ description: "Next.js Bug 诊断:错误类型 → 渲染层 → 构建配置 → 修复",
99
+ version: "1.0.0",
100
+ steps: [
101
+ { id: "classify-error", description: "分类错误(编译错误/运行时错误/构建错误/部署错误)", type: "simple", timeout: 5000 },
102
+ { id: "check-rendering-layer", description: "检查是否 Server/Client Component 边界问题", type: "simple", depends: ["classify-error"], timeout: 10000 },
103
+ { id: "check-build-config", description: "检查 next.config.ts 配置是否正确", type: "simple", depends: ["classify-error"], timeout: 10000 },
104
+ { id: "check-cache", description: "检查缓存行为是否导致数据过期", type: "simple", depends: ["classify-error"], timeout: 10000 },
105
+ { id: "search-docs", description: "搜索 Next.js 官方文档", type: "simple", timeout: 10000 },
106
+ { id: "generate-fix", description: "生成修复方案", type: "llm", depends: ["check-rendering-layer", "check-build-config", "check-cache", "search-docs"], timeout: 20000 },
107
+ { id: "build-verify", description: "构建 + 类型检查验证修复", type: "simple", depends: ["generate-fix"], timeout: 30000 },
108
+ { id: "approve", description: "人工确认修复", type: "manual", depends: ["build-verify"], timeout: 120000 },
109
+ ],
110
+ triggers: [{ type: "cli", command: "bug" }, { type: "mcp", tool: "diagnose_bug" }],
111
+ },
112
+ ],
113
+ },
114
+ prompt: {
115
+ system: "你是一个 Next.js 14 专家。使用 App Router、React Server Components。默认服务端渲染,按需客户端交互。",
116
+ rules: [
117
+ "组件默认 Server Components,需要交互时才加 'use client'",
118
+ "使用 App Router 文件系统路由(page/layout/loading/error)",
119
+ "服务端数据获取使用 async component + fetch + cache()",
120
+ "客户端数据获取使用 SWR 或 React Query",
121
+ "图片使用 next/image,链接使用 next/link",
122
+ "中间件在 Edge Runtime 执行,不能直接访问数据库",
123
+ "使用 generateStaticParams + ISR 优化静态页面",
124
+ ],
125
+ },
126
+ tools: [],
127
+ };
128
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@devflow-tools/plugin-nextjs",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./dist/index.js",
10
+ "types": "./dist/index.d.ts"
11
+ }
12
+ },
13
+ "scripts": {
14
+ "build": "tsc -b",
15
+ "test": "vitest run",
16
+ "typecheck": "tsc --noEmit",
17
+ "clean": "rm -rf dist"
18
+ },
19
+ "dependencies": {
20
+ "@devflow-tools/sdk": "*"
21
+ },
22
+ "devDependencies": {
23
+ "typescript": "^5.5.0",
24
+ "vitest": "^2.0.0"
25
+ },
26
+ "files": [
27
+ "dist"
28
+ ],
29
+ "gitHead": "4cede97fc7fc673f929427fac169acab100ca8ed"
30
+ }