282 lines
8.7 KiB
Markdown
282 lines
8.7 KiB
Markdown
# Ollama Console Remover
|
||
使用Ollama(deepseek-coder:6.7b)智能去除JavaScript文件中的console语句的脚本工具。
|
||
## 功能特点
|
||
- 🤖 使用Ollama AI模型智能识别和移除console语句
|
||
- 🔒 保持代码结构和功能完整性
|
||
- 🚀 支持批量处理整个目录
|
||
- 📦 适用于已压缩的JS文件
|
||
- 🔄 提供本地备用方案(当Ollama不可用时)
|
||
- 📊 显示处理前后的文件大小对比
|
||
## 前置要求
|
||
### 1. 安装Ollama
|
||
```bash
|
||
# macOS
|
||
brew install ollama
|
||
# Linux (Ubuntu/Debian)
|
||
curl -fsSL https://ollama.com/install.sh | sh
|
||
# Windows
|
||
# 从 https://ollama.com/ 下载安装包
|
||
```
|
||
### 2. 启动Ollama服务
|
||
```bash
|
||
ollama serve
|
||
```
|
||
### 3. 下载deepseek-coder模型
|
||
```bash
|
||
ollama pull deepseek-coder:6.7b
|
||
```
|
||
### 4. 验证安装
|
||
```bash
|
||
curl http://localhost:11434/api/tags
|
||
```
|
||
## 使用方法
|
||
### 快速开始
|
||
1. **优化处理dist目录(推荐)**
|
||
```bash
|
||
node scripts/ollama/optimize-dist.js
|
||
```
|
||
这将自动处理`dist`目录中的所有JS文件,并输出到`dist-optimized`目录。
|
||
|
||
2. **测试Ollama连接**
|
||
```bash
|
||
node scripts/ollama/test-ollama.js
|
||
```
|
||
### 高级用法
|
||
1. **处理指定目录**
|
||
```bash
|
||
# 处理单个目录,输出到 新目录
|
||
node scripts/ollama/ollama-console-remover.js ./input-dir ./output-dir
|
||
|
||
# 使用本地备用方法(不使用Ollama)
|
||
node scripts/ollama/ollama-console-remover.js --local ./input-dir
|
||
|
||
# 预览模式(不实际修改文件)
|
||
node scripts/ollama/ollama-console-remover.js --dry-run ./input-dir
|
||
|
||
# 使用优化版本处理器(推荐)
|
||
node scripts/ollama/optimized-processor.js ./input-dir
|
||
```
|
||
2. **命令行参数**
|
||
```
|
||
Usage: node ollama-console-remover.js [options] <input-directory> [output-directory]
|
||
Arguments:
|
||
input-directory 包含要处理的JS文件的目录
|
||
output-directory 保存处理后文件的目录(默认:输入目录 + '-cleaned')
|
||
Options:
|
||
--local, -l 使用本地备用方法,不使用Ollama
|
||
--dry-run, -d 预览模式 - 不保存文件,只显示会做什么
|
||
--help, -h 显示帮助信息
|
||
```
|
||
## 工具说明
|
||
|
||
### 🚀 优化版本(推荐)
|
||
|
||
#### optimize-dist.js
|
||
**便捷脚本,专门用于处理项目的dist目录:**
|
||
- ✅ 自动检测dist目录
|
||
- 🚀 并行处理(4个Worker线程)
|
||
- 📋 智能缓存和增量处理
|
||
- 📊 详细的性能统计
|
||
|
||
#### optimized-processor.js
|
||
**核心优化处理器:**
|
||
- 🎯 Worker线程多文件并发处理
|
||
- 📋 智能缓存(基于文件哈希)
|
||
- ⏭️ 增量处理(只处理修改过的文件)
|
||
- 🤖 自动Ollama检测和本地备用
|
||
|
||
### 📋 基础版本
|
||
|
||
#### ollama-console-remover.js
|
||
**主要工具文件,包含核心功能:**
|
||
- `removeConsoleWithOllama()` - 使用Ollama API处理代码
|
||
- `checkOllamaHealth()` - 检查Ollama服务状态
|
||
- `processJsFiles()` - 递归处理目录中的所有JS文件
|
||
|
||
#### process-dist.js
|
||
**基础dist处理器:**
|
||
- 自动检测dist目录
|
||
- 显示预览信息
|
||
- 提供详细的文件大小对比
|
||
|
||
### 🧪 测试工具
|
||
|
||
#### test-ollama.js
|
||
**测试脚本,用于验证Ollama配置:**
|
||
- 测试Ollama连接
|
||
- 演示console语句移除效果
|
||
- 保存测试结果
|
||
|
||
#### performance-test.js
|
||
**性能对比测试:**
|
||
- 对比不同处理方法的性能
|
||
- 测试正则、状态机、Ollama三种方法
|
||
- 生成详细的性能报告
|
||
|
||
#### simple-parallel-test.js
|
||
**并行处理测试:**
|
||
- 验证Worker线程功能
|
||
- 测试并发处理效果
|
||
- 展示性能提升
|
||
|
||
#### demo-parallel.js
|
||
**并行处理演示:**
|
||
- 创建演示文件
|
||
- 展示实际并行处理效果
|
||
- 统计性能数据
|
||
## 示例
|
||
### 输入代码(已压缩):
|
||
```javascript
|
||
function testFunction(){console.log("debug info");const data={name:"test",value:123};console.error("error occurred");return data;}console.warn("warning message");
|
||
```
|
||
### Ollama处理后:
|
||
```javascript
|
||
function testFunction(){const data={name:"test",value:123};return data;}
|
||
```
|
||
### 处理结果:
|
||
- 移除了所有console语句
|
||
- 保持了代码功能完整性
|
||
- 减少了文件大小
|
||
## 注意事项
|
||
1. **Ollama服务状态**
|
||
- 确保Ollama服务在运行(`ollama serve`)
|
||
- 检查模型是否已下载(`ollama list`)
|
||
2. **文件备份**
|
||
- 建议在处理前备份原始文件
|
||
- 脚本不会修改原始文件,只会创建新的清洁版本
|
||
3. **性能考虑**
|
||
- Ollama处理每个文件需要几秒钟时间
|
||
- 对于大量文件,处理可能需要较长时间
|
||
- 可以使用`--dry-run`预览处理范围
|
||
4. **备用方案**
|
||
- 当Ollama不可用时,会自动切换到本地备用方法
|
||
- 本地方法使用正则表达式,可能不如AI精确
|
||
- 使用`--local`参数可强制使用本地方法
|
||
## 故障排除
|
||
### Ollama连接问题
|
||
```bash
|
||
# 检查Ollama是否运行
|
||
curl http://localhost:11434/api/tags
|
||
# 重启Ollama服务
|
||
ollama serve
|
||
# 检查模型是否已下载
|
||
ollama list
|
||
```
|
||
### 模型相关问题
|
||
```bash
|
||
# 重新下载模型
|
||
ollama pull deepseek-coder:6.7b
|
||
# 删除并重新下载
|
||
ollama rm deepseek-coder:6.7b
|
||
ollama pull deepseek-coder:6.7b
|
||
```
|
||
## 性能优化建议
|
||
1. **批量处理**:使用脚本处理整个目录而不是单个文件
|
||
2. **并行处理**:可以考虑修改脚本支持并发处理多个文件
|
||
3. **缓存结果**:对于重复文件可以添加缓存机制
|
||
4. **增量处理**:只处理修改过的文件
|
||
## 许可证
|
||
## 🚀 性能优化版本
|
||
|
||
### 优化功能
|
||
- **🎯 并行处理**:使用Worker线程多文件并发处理
|
||
- **📋 智能缓存**:避免重复处理相同文件
|
||
- **⏭️ 增量处理**:只处理修改过的文件
|
||
- **📊 性能统计**:详细的处理时间和大小对比
|
||
|
||
### 使用优化版本
|
||
|
||
1. **优化dist目录**
|
||
```bash
|
||
node scripts/ollama/optimize-dist.js
|
||
```
|
||
|
||
2. **优化任意目录**
|
||
```bash
|
||
node scripts/ollama/optimized-processor.js ./dist
|
||
```
|
||
|
||
3. **性能对比测试**
|
||
```bash
|
||
node scripts/ollama/performance-test.js
|
||
```
|
||
|
||
4. **并行处理测试**
|
||
```bash
|
||
node scripts/ollama/simple-parallel-test.js
|
||
```
|
||
|
||
### 优化版本选项
|
||
```bash
|
||
# 预览模式
|
||
node scripts/ollama/optimize-dist.js --dry-run
|
||
|
||
# 使用本地方法(更快但不如AI准确)
|
||
node scripts/ollama/optimize-dist.js --local
|
||
|
||
# 单线程处理
|
||
node scripts/ollama/optimize-dist.js --single
|
||
|
||
# 清除缓存重新处理
|
||
node scripts/ollama/optimize-dist.js --clear-cache
|
||
|
||
# 并行处理演示
|
||
node scripts/ollama/demo-parallel.js
|
||
```
|
||
|
||
### 性能对比
|
||
|
||
| 方法 | 速度 | 准确性 | 适用场景 |
|
||
|------|------|--------|----------|
|
||
| Regex | ⚡ 超快 | ⚠️ 可能误判 | 简单项目 |
|
||
| State Machine | 🚀 快 | ✅ 较准确 | 大多数项目 |
|
||
| Ollama AI | 🐢 慢 | 🎯 最准确 | 生产环境 |
|
||
| 优化并行 | 🚀🚀 超快 | 🎯 最准确 | 大型项目 |
|
||
|
||
### 缓存机制
|
||
- 缓存位置:`./scripts/ollama/.cache/`
|
||
- 基于文件内容哈希
|
||
- 自动清理过期缓存
|
||
- 支持手动清除
|
||
|
||
### 并行处理特性
|
||
- **🎯 Worker线程**:使用Node.js Worker Threads实现多文件并发
|
||
- **⚡ 4个并发Worker**:最多同时处理4个文件
|
||
- **🔄 自动激活**:当文件数 > 3时自动启用并行处理
|
||
- **🛡️ 错误恢复**:Worker失败时自动回退到单线程
|
||
- **📊 性能提升**:特别是使用Ollama AI时效果显著
|
||
|
||
## 性能优化建议
|
||
|
||
1. **批量处理**:使用脚本处理整个目录而不是单个文件
|
||
2. **并行处理**:可以考虑修改脚本支持并发处理多个文件
|
||
3. **缓存结果**:对于重复文件可以添加缓存机制
|
||
4. **增量处理**:只处理修改过的文件
|
||
|
||
## 故障排除
|
||
|
||
## 📚 更多文档
|
||
|
||
- **⚡ 快速开始指南**: [QUICK-START.md](./ollama/QUICK-START.md)
|
||
- **🧪 测试工具**: 查看 `scripts/ollama/` 目录下的测试脚本
|
||
- **📖 性能报告**: 运行测试后生成 `performance-report.json`
|
||
|
||
## 📁 目录结构
|
||
|
||
```
|
||
scripts/
|
||
├── README-OLLAMA.md # 📖 主文档
|
||
└── ollama/ # 🤖 Ollama工具目录
|
||
├── optimize-dist.js # 🚀 优化dist处理器
|
||
├── optimized-processor.js # ⚙️ 核心优化引擎
|
||
├── ollama-console-remover.js # 🤖 基础Ollama处理器
|
||
├── process-dist.js # 📋 基础dist处理器
|
||
├── test-ollama.js # 🧪 Ollama连接测试
|
||
├── performance-test.js # 📊 性能对比测试
|
||
├── simple-parallel-test.js # 🎯 并行处理测试
|
||
├── demo-parallel.js # 🚀 并行处理演示
|
||
├── QUICK-START.md # ⚡ 快速开始指南
|
||
└── .cache/ # 📋 缓存目录(自动创建)
|
||
```
|
||
|
||
MIT License |