Files
TrueGrowth/docs/PWA_ICONS.md

86 lines
2.9 KiB
Markdown
Raw 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.
# PWA 图标生成指南
要从基础 SVG 生成 PWA 图标,您可以使用以下任一工具:
## 方法 1: 使用 ImageMagick (convert)
```bash
# 首先安装 ImageMagick
brew install imagemagick # macOS
sudo apt install imagemagick # Ubuntu/Debian
# 生成所有需要的尺寸
for size in 72 96 128 144 152 192 384 512; do
convert -background transparent -resize ${size}x${size} icon-base.svg icon-${size}x${size}.png
done
```
## 方法 2: 使用 Inkscape
```bash
# 首先安装 Inkscape
brew install inkscape # macOS
sudo apt install inkscape # Ubuntu/Debian
# 生成所有需要的尺寸
for size in 72 96 128 144 152 192 384 512; do
inkscape --export-width=${size} --export-height=${size} --export-filename=icon-${size}x${size}.png icon-base.svg
done
```
## 方法 3: 使用 rsvg-convert
```bash
# 首先安装 librsvg
brew install librsvg # macOS
sudo apt install librsvg2-bin # Ubuntu/Debian
# 生成所有需要的尺寸
for size in 72 96 128 144 152 192 384 512; do
rsvg-convert -w ${size} -h ${size} -o icon-${size}x${size}.png icon-base.svg
done
```
## 方法 4: 在线工具
您也可以使用在线 SVG 转 PNG 工具,例如:
- https://cloudconvert.com/svg-to-png
- https://convertio.co/svg-png/
- https://www.iloveimg.com/convert-svg-to-png
## 必需的图标尺寸
- 72x72px
- 96x96px
- 128x128px
- 144x144px
- 152x152px
- 192x192px (maskable)
- 384x384px
- 512x512px (maskable)
# Service Worker 升级指南
## 版本管理
Service Worker (`sw.js`) 使用版本常量来管理缓存失效和更新。
```javascript
// apps/web/public/sw.js
const APP_VERSION = '0.2.13'; // 增加此值以触发更新
```
## 升级步骤
当部署需要用户更新缓存的更改时(例如错误修复、新功能或静态资源更新):
1. **修改 `sw.js`**
* 在文件顶部找到 `const APP_VERSION`
* 增加版本号(例如从 `0.2.12``0.2.13`)。
2. **更新如何工作**
* **安装阶段**:当浏览器检测到 `sw.js` 存在字节差异时(由于版本号增加),它会在后台安装新的 Service Worker。
* **激活阶段**
* 安装完成后,新的 Service Worker 会等待所有客户端标签页关闭(或调用 `skipWaiting()`)。
* 激活后,它会创建带有新版本后缀的新缓存(例如 `drawnix-v0.2.13`)。
* 它会识别旧版本的缓存(例如 `drawnix-v0.2.12`)。
* **迁移**:它会自动将有价值的数据(如缓存的图片)从旧缓存迁移到新缓存,以节省带宽。
* **清理**迁移和短暂的安全延迟30秒它会删除旧缓存。
3. **强制更新**
* `index.html` 使用 `cache: 'reload'` 方式获取,确保始终加载最新版本,防止因 HTML 过期指向丢失的 JS 哈希而导致的“白屏”问题。
* 在开发模式(`localhost`)下,静态资源缓存会被绕过,以避免调试困扰。