# 更新日志 / Changelog

本项目的所有重要变更都记录在此文件中。

格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/)，
并且遵守 [语义化版本](https://semver.org/lang/zh-CN/)。

---

## [1.1.0] - 2024-08-25

### 🌐 重大功能添加 (Major Features)

- **多云存储支持**: 新增对腾讯云COS、AWS S3、华为云OBS的完整支持
- **统一抽象接口**: 实现CloudStorageProvider抽象基类，提供一致的多云存储接口
- **工厂模式**: 添加CloudStorageFactory，支持动态创建不同云存储提供商实例
- **智能SDK加载**: 支持动态导入云存储SDK，按需加载，减少依赖体积

### 🔧 新增特性 (Added)

- **新的配置接口**:
  - `COSConfig` - 腾讯云COS配置接口
  - `S3Config` - AWS S3配置接口  
  - `OBSConfig` - 华为云OBS配置接口
- **新的导出函数**:
  - `createViteCloudPlugin()` - 多云存储插件创建函数
  - `CloudStorageFactory` - 云存储工厂类
- **向后兼容性**:
  - 保留 `createViteOSSPlugin()` 函数名作为别名
  - 保留所有现有的配置选项和接口

### 📦 依赖更新 (Dependencies)

- **新增可选依赖**:
  - `cos-nodejs-sdk-v5` - 腾讯云COS SDK
  - `aws-sdk` - AWS S3 SDK
  - `esdk-obs-nodejs` - 华为云OBS SDK
- **依赖调整**:
  - 将 `ali-oss` 移至 `optionalDependencies`
  - 更新 `mime` 为 `mime-types`
  - 保持向前兼容的依赖结构

### 🏗️ 架构重构 (Refactored)

- **抽象化重构**: 将原有OSS特定代码重构为通用云存储接口
- **提供商模式**: 每个云存储服务实现独立的Provider类
- **类型系统优化**: 更新TypeScript类型定义以支持多云配置
- **错误处理增强**: 统一各个云存储提供商的错误处理机制

### 📝 文档更新 (Documentation)

- **README.md**: 完全重写以展示多云存储功能
- **配置示例**: 添加所有四个云存储提供商的完整配置示例
- **故障排除**: 更新故障排除指南以覆盖多云存储场景
- **API文档**: 添加新的类型定义和接口说明

### 🛠️ 开发体验 (Developer Experience)

- **智能提示**: 完善的TypeScript类型定义
- **错误提示**: 清晰的SDK安装提示和配置错误信息
- **调试支持**: 详细的构建日志，支持per-provider缓存文件

### 🔄 迁移指南 (Migration Guide)

现有用户可以无缝升级：

```typescript
// v1.0.x 配置 (仍然有效)
import { createViteOSSPlugin } from 'vite-upload-assets-oss'

// v1.1.0 新配置 (推荐)
import { createViteCloudPlugin } from 'vite-upload-assets-oss'

export default defineConfig({
  plugins: [
    createViteCloudPlugin({
      provider: 'oss', // 明确指定提供商
      oss: {
        // ... 相同的OSS配置
      }
      // ... 其他配置保持不变
    })
  ]
})
```

---

## [1.0.1] - 2024-01-25

### 🐛 Bug修复
- 修复动态图片加载问题，解决Vue编译后Object.assign映射中变量仍指向本地路径的问题
- 修复Rollup构建配置的ES模块问题，添加"type": "module"配置
- 改进本地资源引用替换逻辑，增加对变量赋值和单独URL模式的支持

### 📝 文档完善
- README新增英文版本，实现中英文双语支持
- 优化文档结构和示例代码
- 添加更多使用场景和最佳实践指南



## [1.0.0] - 2024-01-20

### ✨ 新增功能
- 🎯 支持多种媒体资源引入方式的自动识别和上传
- 🚀 基于文件哈希的智能去重上传机制
- ⚡ 可配置的并发上传控制，防止OSS接口限流
- 💾 本地缓存机制，避免重复上传相同文件
- 🔧 开发模式友好，可配置跳过上传
- 📊 详细的上传进度和统计信息展示
- 🛡️ 完善的错误处理和恢复机制

### 🎪 支持的引入方式
- **ES模块导入**: `import image from './assets/image.png'`
- **动态URL构造**: `new URL('./assets/image.png', import.meta.url).href`
- **CSS url()引用**: `background: url('./assets/bg.jpg')`  
- **HTML模板引用**: `<img src="./assets/photo.jpg">`

### ⚙️ 配置选项
- **OSS配置**: 支持AccessKey、Secret、Bucket、Region等完整配置
- **文件过滤**: 支持include/exclude规则和最小文件大小限制
- **路径自定义**: 支持灵活的OSS路径模板，包含hash、name、ext等占位符
- **并发控制**: 可配置最大并发上传数
- **缓存管理**: 支持本地缓存和自定义缓存文件路径
- **开发选项**: 开发模式控制和详细日志开关

### 🔧 技术实现
- **多钩子协作**: 使用resolveId、load、transform、generateBundle等Vite插件钩子
- **占位符机制**: 通过占位符延迟替换，确保代码转换准确性
- **路径解析**: 支持相对路径、别名路径、绝对路径的智能解析
- **错误恢复**: 上传失败时自动回退到本地路径

### 📦 项目结构
- **TypeScript支持**: 完整的类型定义和类型检查
- **模块化设计**: 核心功能分离，便于维护和扩展
- **示例项目**: 提供完整的Vue 3示例项目
- **详细文档**: 包含使用指南、API文档、故障排除等

### 🧪 测试和示例
- **示例项目**: 基于Vue 3的完整示例，演示所有功能特性
- **构建配置**: 提供开发和生产环境的完整构建配置
- **环境变量**: 支持通过环境变量配置OSS信息

### 📚 文档完善
- **README.md**: 详细的使用指南和配置说明
- **API文档**: 完整的配置选项和类型定义
- **故障排除**: 常见问题解决方案
- **贡献指南**: 开发和贡献流程说明

---

## 后续版本规划

### [1.1.0] - 规划中
- [ ] 支持腾讯云COS和七牛云存储
- [ ] 添加图片压缩和格式转换功能
- [ ] 支持资源预加载和懒加载优化
- [ ] 增加Webpack插件版本

### [1.2.0] - 规划中  
- [ ] 支持多CDN域名负载均衡
- [ ] 添加资源版本管理和回滚功能
- [ ] 支持自定义上传前处理钩子
- [ ] 增加资源使用情况分析