refactor: 产品大图迁移OSS,小图标本地打包,资源基址改为.env配置

This commit is contained in:
2026-08-06 23:52:48 +08:00
parent 8de00e6614
commit 0f3132b08e
77 changed files with 83 additions and 70 deletions
+16 -17
View File
@@ -16,7 +16,7 @@
```
smart-engraving-miniapp/
├── config/ # Taro 配置文件
│ └── index.js # 构建配置(含 copy patternsicon、img、theme.json 复制)
│ └── index.js # 构建配置(含 copy patternsicon、theme.json 复制)
├── src/
│ ├── app.tsx # 应用入口(全局 ThemeProvider 挂载)
│ ├── app.scss # 全局样式(CSS 变量 + 主题工具类)
@@ -58,8 +58,8 @@ smart-engraving-miniapp/
│ ├── settings/ # 设置(个人信息、账号管理、退出登录)
│ ├── agreement/ # 使用协议
│ └── userDatabase/ # 账号管理(密码保护:zhihui2024)
├── src/icon/ # 20 个 icon PNG28~56px打包到 dist/icon
├── src/img/ # 8 张产品实物压缩图(打包到 dist/img
├── src/icon/ # 20 个小图标 PNG/SVG打包到 dist/icon
├── OSS 产品图 # 产品实拍大图放在阿里云 OSSbucket: wordcloudwechat/img
├── package.json
├── tsconfig.json
└── project.config.json # 微信开发者工具配置
@@ -194,7 +194,7 @@ npm run dev:h5
## 图片资源与包体积说明
当前项目的产品实物照片(`src/img/`)已内置在小程序中。由于微信小程序**预览/上传代码包体积上限为 2MB**,大量高分辨率照片会导致超限
产品实拍大图已迁移到阿里云 OSS`wordcloudwechat/img`),`src/img/` 本地目录已删除;由于微信小程序**上传代码包体积上限为 2MB**,大图继续放远端可以长期保持包体稳定
### 已采取的措施(两步压缩脚本)
@@ -202,10 +202,10 @@ npm run dev:h5
1. **resize**:最大边长限制到 800px
2. **format**PNG → JPG
3. **quality**JPG 质量 60%
- 执行一次即可:`node compress-images.js`
- 产品大图目前已迁到 OSS`src/img` 本地目录已删除,不再需要执行本地压缩脚本
- 当前编译后 `dist/` 总大小约 **1.03 MB**(新增 1 个 icon 约 7KB),满足微信限制。
### ⚠️ 注意:压缩 ≠ 长期方案
### 当前状态:已迁移 OSS
压缩后的图片在手机上画质会有可见损失(尤其缩放到全屏轮播时)。**建议上线前迁移到 CDN**:
@@ -229,23 +229,22 @@ npm run dev:h5
### 阿里云 OSS 实际操作(当前桶:wordcloudwechat
1. 当前 Bucket `wordcloudwechat` 已创建:地域 `华东1(杭州)`,读写权限**公共读**,可直接使用。
2. 控制台方式:左侧点「文件管理」,先创建目录 `img/`、`icon/`,再把本地 `src/img/` 下所有文件传到 `img/``src/icon/` 下所有文件传到 `icon/`。目录层级必须和本地一致
3. 打开 `src/utils/asset.ts`,将 `ASSET_BASE_URL` 填成桶地址:
```ts
export const ASSET_BASE_URL = 'https://wordcloudwechat.oss-cn-hangzhou.aliyuncs.com'
```
2. 只需把 `src/img/` 下的产品大图传到 Bucket 的 `img/` 目录;`src/icon/` 等几 KB 以内的小图标继续打包在本地,不用传 OSS
`src/utils/asset.ts` 已默认填成上面的 OSS 地址;如果用 CNAME 域名,可改成 `https://wordcloudwechat.cn-hangzhou.taihangtop.cn`。
4. 项目中商品图、首页成品图、商品 icon、设计清单/订单里已存的 icon 会自动拼接成远程 URL;本地路径作为兜底,后端没就绪时不裂图。
5. 等 OSS 图片稳定后,可把 `config/index.js` 中 `src/img` 的 copy 规则移除,进一步压缩 dist 体积;`src/icon` 按需保留或也迁到 OSS。
3. 资源基地址统一配在项目根目录 `.env`(已提供 `.env.example`):
```dotenv
OSS_BASE_URL=https://wordcloudwechat.oss-cn-hangzhou.aliyuncs.com
```
后续迁移换桶/换域名时,只需要改 `.env` 里的 `OSS_BASE_URL`。
4. 商品图、首页成品图会走 OSS;代码只在 `path` 以 `/img/` 开头时才拼接远程地址,`/icon/*` 小图标仍从包内加载。
5. 照片稳定走远程后,`config/index.js` 中 `src/img` 的 copy 规则不再需要(当前已移除)。
6. 微信小程序后台需要在「开发管理 - 服务器域名」配置 `downloadFile` 合法域名:`https://wordcloudwechat.oss-cn-hangzhou.aliyuncs.com`;如果改用了 CNAME,则填对应 HTTPS 域名。
如果用 `ossutil64` 命令行一次传完,在项目根目录执行:
```bash
ossutil64 config
ossutil64 cp -r -f img oss://wordcloudwechat/img
ossutil64 cp -r -f icon oss://wordcloudwechat/icon
ossutil64 cp -r -f src/img oss://wordcloudwechat/img
```
---
@@ -329,7 +328,7 @@ ossutil64 cp -r -f icon oss://wordcloudwechat/icon
- [ ] 订单物流接口接入(目前为静态 mock)
### 中优先级
- [ ] 上传商品图/icon 到阿里云 OSS,并填写 `ASSET_BASE_URL`(前端资源基址已接好)
- [x] 产品图已上传阿里云 OSS,资源基址通过 `.env` 的 `OSS_BASE_URL` 配置
- [ ] 添加更多词云底图模板
- [ ] 支持从微信聊天记录导入 Excel 名单
- [ ] 实现设计稿保存到草稿箱功能