一款基于 WebAssembly 的浏览器端 Wallpaper Engine 资产解包/打包工具。
- 纯本地处理 - 所有数据在浏览器本地处理,无需上传至服务器
- 资产解包 - 提取 scene.pkg 中的音频、图像、配置等资源
- 资产打包 - 将修改后的资源重新打包为 scene.pkg
- WASM 加速 - 使用 Go + WebAssembly 实现高性能二进制处理
graph LR
A[.pkg 文件] --> B[Wasm 解包引擎]
B --> C[浏览器内存/ZIP]
C --> D{用户修改资产}
D --> E[浏览器内存/ZIP]
E --> F[Wasm 打包引擎]
F --> G[新 .pkg 文件]
style B fill:#00ffff,stroke:#333,stroke-width:2px
style F fill:#ff00ff,stroke:#333,stroke-width:2px
- 前端: Vue 3 + TypeScript + Vite
- 核心引擎: Go 1.26 + WebAssembly
- 压缩处理: JSZip
- 构建工具: Make
- Node.js >= 20
- Go >= 1.26
- Make
make installmake dev此命令会:
- 编译 Go WASM 模块
- 启动 Vite 开发服务器
make build-wasmcd web && npm run build- 将
scene.pkg文件拖入左侧 EXTRACT 区域 - 等待解析完成,查看资产清单
- 点击 EXPORT ZIP 下载提取的资源
- 修改提取的资源(替换图像、音频等)
- 保持原目录结构,打包为 ZIP 文件
- 将 ZIP 拖入右侧 REPACK 区域
- 点击 BUILD PKG 生成新的
scene.pkg
.
├── Makefile # 构建脚本
├── wasm-core/ # Go WASM 核心引擎
│ └── cmd/wepkg/
│ └── main.go # WASM 入口
└── web/ # 前端应用
├── src/
│ └── App.vue # 主界面
└── public/
└── main.wasm # 编译后的 WASM 模块
本项目受到了以下开源项目的启发与底层逻辑支持:
- redpfire/we - 本项目核心解包/打包逻辑的 C++ 原始实现。感谢原作者对
.pkg格式研究的贡献。 - JSZip - 提供强大的浏览器端压缩支持。
- Go WebAssembly - 让高性能二进制处理走进浏览器。
MIT