Files
qiming/qiming-dev-inject/README.md
2026-06-01 12:53:19 +08:00

258 lines
6.2 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.
# 网页应用智能脚本注入
🚀 **框架感知的开发环境脚本注入工具**
支持 Vite、Next.js、React 等现代框架的智能脚本注入,提供零侵入式的开发期监控方案。
## 🌟 特性
### 框架感知注入
- 🟢 **Vite**: 自动注入 Vite 插件到 `vite.config.js`
- 🟢 **Next.js App Router**: 注入到 `app/layout.tsx`
- 🟢 **Next.js Pages Router**: 注入到 `pages/_document.tsx`
- 🟢 **Create React App**: 注入到 `public/index.html`
- 🟢 **传统 HTML**: 直接修改 HTML 文件
### 核心功能
- ✅ 支持远程 URL 和绝对路径注入
- ✅ 自动检测项目类型和最佳注入方式
- ✅ 智能去重,避免重复注入
- ✅ 支持卸载功能
- ✅ 预览模式dry-run
- ✅ 详细日志输出
- ✅ 零侵入式修改
## 安装
使用 npx推荐
```bash
# 查看帮助信息
npx @xagi/dev-inject --help
# 查看版本信息
npx @xagi/dev-inject --version
# 静默安装(自动确认,无需交互)-y 选项
npx -y @xagi/dev-inject install --framework
```
或使用 pnpm dlx
```bash
pnpm dlx @xagi/dev-inject --help
```
## 🚀 快速开始
### 框架感知注入(推荐)
```bash
# 静默安装(推荐,无需确认)
npx -y @xagi/dev-inject install --framework
# 使用默认脚本地址 (/sdk/dev-monitor.js)
npx @xagi/dev-inject install --framework
# 或指定自定义地址
npx @xagi/dev-inject install --remote=http://localhost:9000/dev-monitor.js --framework
# 使用 pnpm
pnpm dlx @xagi/dev-inject install --framework
# 查看检测到的项目类型
npx @xagi/dev-inject install --framework --verbose
```
### 传统 HTML 注入
```bash
# 注入远程脚本
npx @xagi/dev-inject install --remote=http://localhost:9000/dev-monitor.js
# 注入本地脚本
npx @xagi/dev-inject install --remote=/scripts/dev-monitor.js
# 指定特定文件
npx @xagi/dev-inject install --remote=/scripts/monitor.js --file=./public/index.html
```
### 预览和卸载
```bash
# 预览将要执行的操作
npx @xagi/dev-inject install --remote=/scripts/monitor.js --framework --dry-run
# 移除框架注入
npx @xagi/dev-inject uninstall --framework
# 移除传统注入
npx @xagi/dev-inject uninstall
```
## 📋 支持的脚本格式
### 远程 URL
```bash
--remote=http://localhost:9000/dev-monitor.js
--remote=https://cdn.example.com/monitor.js
```
### 绝对路径
```bash
--remote=/scripts/dev-monitor.js
--remote=/assets/monitor.js
```
## 🎯 配置选项
| 选项 | 描述 | 示例 |
|------|------|------|
| `--remote` | 脚本地址(可选,默认值: /sdk/dev-monitor.js | `--remote=/scripts/dev-monitor.js` |
| `--framework, -f` | 使用框架感知注入 | `--framework` |
| `--file` | 指定 HTML 文件 | `--file=./public/index.html` |
| `--dry-run` | 预览模式 | `--dry-run` |
| `--verbose` | 详细输出 | `--verbose` |
| `--help` | 显示帮助 | `--help` |
| `--version` | 显示版本 | `--version` |
## 监控脚本功能
`dev-inject/scripts/dev-monitor.js` 提供完整的开发监控功能:
### 错误监控
- 全局 JavaScript 错误捕获
- Promise Rejection 监控
- 资源加载错误监控
- iframe 通信错误
### 性能监控
- 页面加载时间分析
- 网络请求时间统计
- 长任务检测
- DOM Ready 性能
### 开发工具
- 实时监控面板
- 数据导出功能
- 控制台日志拦截
- iframe 通信支持
### 使用监控面板
```javascript
// 在浏览器控制台执行
DevMonitor.showPanel(); // 显示监控面板
DevMonitor.getData(); // 获取监控数据
DevMonitor.exportData(); // 导出监控数据
DevMonitor.clearData(); // 清除监控数据
```
## 配置选项
| 选项 | 描述 | 示例 |
|------|------|------|
| `--remote` | 脚本地址(必需) | `--remote=/scripts/dev-monitor.js` |
| `--file` | 指定 HTML 文件 | `--file=./public/index.html` |
| `--dry-run` | 预览模式 | `--dry-run` |
| `--verbose` | 详细输出 | `--verbose` |
| `--help` | 显示帮助 | `--help` |
| `--version` | 显示版本 | `--version` |
## 工作原理
1. **查找 HTML 文件**:自动查找项目中的 HTML 文件(优先 index.html
2. **脚本注入**:在 `</head>` 标签前注入脚本
3. **去重处理**:移除之前注入的相同脚本,避免重复
4. **智能检测**支持多种项目结构React、Vite、Next.js 等)
## 开发和测试
```bash
# 进入项目目录
cd dev-inject
# 安装依赖
npm install
# 链接到全局(用于本地测试)
npm link
# 测试帮助信息
dev-inject --help
# 测试注入功能(预览模式)
dev-inject install --remote=/scripts/dev-monitor.js --dry-run
# 取消链接
npm unlink
```
## 📦 发布到 npm
```bash
# 确保你已经登录 npm
npm login
# 发布到 npm
npm publish
# 发布后验证
npx @xagi/dev-inject --version
```
## 项目结构
```
dev-inject/
├── bin/
│ └── index.js # CLI 入口文件
├── lib/
│ ├── args.js # 参数解析
│ ├── inject.js # 核心注入功能
│ ├── utils.js # 工具函数
│ └── help.js # 帮助信息
├── scripts/
│ └── dev-monitor.js # 监控脚本
├── package.json # 项目配置
└── README.md # 说明文档
```
## 兼容性
- ✅ Node.js >= 14.0.0
- ✅ 所有现代浏览器
- ✅ React、Vue、Angular、Next.js 等
- ✅ Vite、Webpack、Create React App 等构建工具
## 📦 发布配置
本项目已配置 npm publish 时仅包含必要的文件:
**包含的文件:**
-`bin/` - CLI 可执行文件
-`lib/` - 核心库文件
-`scripts/` - 监控脚本
-`*.md` - 文档文件
-`LICENSE` - 许可证
**排除的文件:**
-`test/` - 测试文件
-`test-projects/` - 测试项目
- ❌ 所有 `*.test.js` 文件
- ❌ 测试和演示 HTML 文件
- ❌ 日志和缓存文件
- ❌ 开发工具配置
完整配置请查看 `package.json``files` 字段和 `.npmignore` 文件。
## 注意事项
1. **绝对路径**:确保静态文件服务器可以访问该路径
2. **重复注入**:工具会自动处理重复注入问题
3. **权限**:确保有 HTML 文件的写入权限
4. **备份**:建议在操作前备份重要文件
## 许可证
MIT