vite-upload-assets-oss
Version:
🚀 A powerful Vite plugin that automatically uploads media assets to multiple cloud storage providers (OSS, COS, S3, OBS) and replaces references with CDN URLs. Supports multiple import methods, caching, and concurrent uploads. | 一个强大的Vite插件,自动将媒体资源上传到多个云
165 lines (126 loc) • 5.99 kB
Markdown
# 更新日志 / 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域名负载均衡
- [ ] 添加资源版本管理和回滚功能
- [ ] 支持自定义上传前处理钩子
- [ ] 增加资源使用情况分析