claude-dev-server 1.1.3 → 1.2.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.
- package/README.md +80 -35
- package/dist/assets/dev.html +739 -0
- package/dist/assets/inspect-bridge.js +47 -0
- package/dist/{chunk-F6IKDNXJ.js → chunk-PAE5WTS2.js} +605 -414
- package/dist/chunk-PAE5WTS2.js.map +1 -0
- package/dist/cli.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-F6IKDNXJ.js.map +0 -1
package/README.md
CHANGED
|
@@ -7,13 +7,14 @@
|
|
|
7
7
|
## 功能特性
|
|
8
8
|
|
|
9
9
|
- **通用支持** - 适用于 Vite、Next.js、Webpack 或任何 dev server
|
|
10
|
+
- **分屏布局** - 左侧 Claude Code 终端,右侧开发服务器,可拖动分隔线调整宽度
|
|
10
11
|
- **ttyd 终端** - 使用 ttyd 提供真正的 PTY 终端体验,完整支持 ANSI 转义序列、颜色、光标控制
|
|
11
12
|
- **Claude Code 集成** - 通过 WebSocket 与后台 Claude Code 进程通信,实时 AI 辅助开发
|
|
12
13
|
- **元素检查器** - 点击页面元素,自动定位到对应源代码位置,并发送到 Claude Code 终端
|
|
13
14
|
- **智能提示格式** - 自动格式化选中元素为 `@filename:line <selector> "text content"` 格式
|
|
15
|
+
- **Next.js 路由支持** - 使用真实 iframe src 解决 Next.js 路由问题
|
|
14
16
|
- **无需安装** - 直接使用 `npx` 运行,自动检测项目类型
|
|
15
|
-
- **快捷键支持** - `Cmd/Ctrl +
|
|
16
|
-
- **悬浮按钮** - Claude Code 图标按钮打开面板,Inspect 按钮进入检查模式
|
|
17
|
+
- **快捷键支持** - `Cmd/Ctrl + Shift + I` 切换检查模式,`Escape` 退出
|
|
17
18
|
|
|
18
19
|
## 快速开始
|
|
19
20
|
|
|
@@ -63,48 +64,87 @@ npx claude-dev-server@latest --port 4000
|
|
|
63
64
|
|
|
64
65
|
## 使用方法
|
|
65
66
|
|
|
66
|
-
###
|
|
67
|
+
### 界面布局
|
|
67
68
|
|
|
68
|
-
|
|
69
|
+
浏览器打开后会显示分屏布局:
|
|
69
70
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
```
|
|
72
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
73
|
+
│ ┌────────────────────┐ │ ┌──────────────────────────────┐ │
|
|
74
|
+
│ │ Claude Code 终端 │ │ │ 开发服务器 (Next.js) │ │
|
|
75
|
+
│ │ │ │ │ │ │
|
|
76
|
+
│ │ [Inspect 按钮] │ ╳ │ │ │
|
|
77
|
+
│ │ │ │ │ │ │
|
|
78
|
+
│ └────────────────────┘ │ └──────────────────────────────┘ │
|
|
79
|
+
│ 左侧 (40%) │ 右侧 (60%) │
|
|
80
|
+
└─────────────────────────────────────────────────────────────┘
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
- **左侧面板** - Claude Code 终端(可拖动分隔线调整宽度)
|
|
84
|
+
- **右侧面板** - 开发服务器(Next.js/Vite/Webpack 应用)
|
|
85
|
+
- **分隔线** - 鼠标悬停变橙色,拖动可调整左右宽度
|
|
74
86
|
|
|
75
87
|
### 键盘快捷键
|
|
76
88
|
|
|
77
89
|
| 快捷键 | 说明 |
|
|
78
90
|
|--------|--------|
|
|
79
|
-
| `Cmd/Ctrl +
|
|
80
|
-
| `Escape` |
|
|
91
|
+
| `Cmd/Ctrl + Shift + I` | 切换元素检查模式 |
|
|
92
|
+
| `Escape` | 退出检查模式 |
|
|
81
93
|
|
|
82
94
|
### 工作流程
|
|
83
95
|
|
|
84
|
-
1.
|
|
85
|
-
2.
|
|
86
|
-
3.
|
|
87
|
-
4.
|
|
88
|
-
5. 点击元素后自动发送格式化提示到终端:
|
|
96
|
+
1. 在左侧 Claude Code 终端中与 AI 交互
|
|
97
|
+
2. 点击左上角的 **Inspect** 按钮进入检查模式
|
|
98
|
+
3. 鼠标移动到右侧页面元素上会高亮显示
|
|
99
|
+
4. 点击元素后自动发送格式化提示到终端:
|
|
89
100
|
```
|
|
90
|
-
@src/App.tsx:12 <button
|
|
101
|
+
@src/App.tsx:12 <button.inline-flex.items-center> "Submit"
|
|
91
102
|
```
|
|
92
|
-
|
|
103
|
+
5. Claude Code 会根据代码位置上下文回答你的问题
|
|
93
104
|
|
|
94
105
|
## 提示格式说明
|
|
95
106
|
|
|
96
107
|
选中元素后,会自动生成以下格式的提示:
|
|
97
108
|
|
|
98
109
|
```
|
|
99
|
-
@<filename
|
|
110
|
+
@<filename> <selector> "text content"
|
|
100
111
|
```
|
|
101
112
|
|
|
102
|
-
- `@filename
|
|
103
|
-
- `<selector>` - CSS 选择器(标签名 + ID +
|
|
104
|
-
- `"text content"` -
|
|
113
|
+
- `@filename` - 源文件路径
|
|
114
|
+
- `<selector>` - CSS 选择器(标签名 + ID + 类名,最多 3 个)
|
|
115
|
+
- `"text content"` - 元素文本内容(前 50 个字符)
|
|
116
|
+
|
|
117
|
+
**示例:**
|
|
118
|
+
```
|
|
119
|
+
@apps/web/src/app/[lng]/login/page.tsx <button.inline-flex.items-center> "Log In"
|
|
120
|
+
```
|
|
105
121
|
|
|
106
122
|
## 架构
|
|
107
123
|
|
|
124
|
+
### Next.js 路由解决方案
|
|
125
|
+
|
|
126
|
+
使用 `dev.html` + referer 检测解决 Next.js 在 iframe 中的路由问题:
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
浏览器直接访问: http://localhost:3000/dashboard
|
|
130
|
+
↓
|
|
131
|
+
服务器检测: 无 dev.html referer
|
|
132
|
+
↓
|
|
133
|
+
302 重定向到: /dev.html?path=/dashboard
|
|
134
|
+
↓
|
|
135
|
+
dev.html 加载,创建 iframe src="/dashboard"
|
|
136
|
+
↓
|
|
137
|
+
iframe 加载,referer=".../dev.html"
|
|
138
|
+
↓
|
|
139
|
+
服务器检测到 dev.html referer
|
|
140
|
+
↓
|
|
141
|
+
代理原始 HTML(无注入)
|
|
142
|
+
↓
|
|
143
|
+
Next.js 有真实 window.location → 路由正常工作 ✅
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### 系统架构
|
|
147
|
+
|
|
108
148
|
```
|
|
109
149
|
┌─────────────────────────────────────────────────────────────┐
|
|
110
150
|
│ Claude Dev Server (主进程) │
|
|
@@ -113,9 +153,9 @@ npx claude-dev-server@latest --port 4000
|
|
|
113
153
|
│ │ HTTP Proxy │ │ Control Server │ │
|
|
114
154
|
│ │ (Port :3000) │ │ (WebSocket) │ │
|
|
115
155
|
│ │ │ │ │ │
|
|
116
|
-
│ │ -
|
|
117
|
-
│ │ -
|
|
118
|
-
│ │ -
|
|
156
|
+
│ │ - Referer 检测 │ │ - ttyd 管理 │ │
|
|
157
|
+
│ │ - dev.html 重定向│◄───────►│ - Claude 进程 │ │
|
|
158
|
+
│ │ - 代理转发 │ │ │ │
|
|
119
159
|
│ └────────┬─────────┘ └──────────────────┘ │
|
|
120
160
|
│ │ │
|
|
121
161
|
│ ▼ │
|
|
@@ -132,9 +172,13 @@ npx claude-dev-server@latest --port 4000
|
|
|
132
172
|
┌─────────────────┐
|
|
133
173
|
│ Browser │
|
|
134
174
|
│ │
|
|
135
|
-
│
|
|
136
|
-
│
|
|
137
|
-
│
|
|
175
|
+
│ ┌───────────┐ │
|
|
176
|
+
│ │ dev.html │ │
|
|
177
|
+
│ │ (分屏布局) │ │
|
|
178
|
+
│ │ │ │
|
|
179
|
+
│ │ 左: 终端 │ │
|
|
180
|
+
│ │ 右: iframe│ │
|
|
181
|
+
│ └───────────┘ │
|
|
138
182
|
└─────────────────┘
|
|
139
183
|
```
|
|
140
184
|
|
|
@@ -151,27 +195,28 @@ npx claude-dev-server@latest --port 4000
|
|
|
151
195
|
|
|
152
196
|
### Q: 如何使用自己的 claude 命令?
|
|
153
197
|
|
|
154
|
-
A:
|
|
155
|
-
|
|
156
|
-
```bash
|
|
157
|
-
npx claude-dev-server --claude-path /path/to/your/claude
|
|
158
|
-
```
|
|
198
|
+
A: 暂不支持,默认使用 `claude` 命令。
|
|
159
199
|
|
|
160
200
|
### Q: Inspect 模式下为什么有些元素无法选中?
|
|
161
201
|
|
|
162
|
-
A:
|
|
202
|
+
A: 某些特殊元素(如 iframe 内部)可能无法正常选中。
|
|
163
203
|
|
|
164
204
|
### Q: 支持哪些框架的源码定位?
|
|
165
205
|
|
|
166
|
-
A: 目前支持
|
|
206
|
+
A: 目前支持 Next.js (通过 Turbopack chunk 解析)。其他框架使用默认的元素选择器。
|
|
167
207
|
|
|
168
208
|
### Q: 可以在其他端口使用吗?
|
|
169
209
|
|
|
170
210
|
A: 可以,使用 `--port` 选项指定任意端口。
|
|
171
211
|
|
|
212
|
+
### Q: 为什么 URL 中有 `/dev.html?path=...`?
|
|
213
|
+
|
|
214
|
+
A: 这是正常的。dev.html 是分屏布局容器,`path` 参数指定右侧 iframe 要加载的实际路径。
|
|
215
|
+
|
|
172
216
|
## 技术栈
|
|
173
217
|
|
|
174
|
-
- **HTTP Proxy** - 请求转发和
|
|
218
|
+
- **HTTP Proxy** - 请求转发和 referer 检测
|
|
219
|
+
- **dev.html** - 分屏布局容器,解决 Next.js 路由问题
|
|
175
220
|
- **ttyd** - 终端 over HTTP/WebSocket
|
|
176
221
|
- **xterm.js** - Web 终端组件(VS Code 同款)
|
|
177
222
|
- **WebSocket (ws)** - 客户端-服务器通信
|