chore: 迁移到 pnpm 并更新打包与测试文档

- 用 pnpm 替换 npm,锁定 pnpm@10.33.0,删除 package-lock.json 相关说明
- package.json 将渲染层依赖移入 devDependencies,减小 app.asar 体积
- 新增 electron:smoke 冒烟脚本与 icon 生成脚本
- win 平台设置 AppUserModelID,修复任务栏图标归组
- 清理 tsBuildInfoFile 输出路径至 node_modules/.tmp
- 更新测试断言以匹配画幅遮罩、取景器缩放与模型库外部资产行为
- README 与打包指南补充 pnpm、镜像与常见问题说明
This commit is contained in:
2026-09-16 20:03:57 +08:00
parent 2ad176be4e
commit b9fd289caf
27 changed files with 5538 additions and 8452 deletions

View File

@@ -70,9 +70,11 @@ src
## 本地开发
本工程使用 **pnpm**(`package.json` 的 `packageManager` 已锁定 `pnpm@10.33.0`,唯一锁文件是 `pnpm-lock.yaml`)。
```bash
npm install
npm run dev
pnpm install
pnpm run dev
```
默认开发地址通常为:
@@ -86,17 +88,18 @@ http://127.0.0.1:5173/
需要局域网访问(手机或其他设备)时:
```bash
npm run dev -- --host
pnpm run dev -- --host
```
> Windows 提示:
> - `vite.config` 已处理中文路径下 `server.fs.allow` 的盘符解析问题(避免 403 Restricted)。
> - 若 `npm install` 报 `@rollup/rollup-darwin-arm64` 平台不匹配,用 `npm install --force` 跳过——该包是 macOS 专用,Windows 不需要,rollup 会自动装载对应平台的二进制。
> - `.npmrc` 已把 `node-linker` 设为 `hoisted`:Electron / electron-builder 需要 npm 式扁平 `node_modules`,pnpm 默认符号链接结构会导致打包失败。
> - 重装依赖请统一执行 `pnpm install`,**不要手动删除 `node_modules` 里的单个包**(例如 `node_modules/electron`)——绕过包管理器删包会让 pnpm 仍以为依赖已安装,产出缺失或空壳的依赖目录,且这种损坏会「粘住」,只能整体重装。
预览生产包:
```bash
npm run preview
pnpm run preview
```
默认预览地址通常为:
@@ -157,9 +160,9 @@ build-electron.bat
或手动分步执行:
```bash
npm install
npm run build
npx electron-builder --win
pnpm install
pnpm run build
pnpm exec electron-builder --win
```
打包产物位于 `release/` 目录:
@@ -174,20 +177,22 @@ npx electron-builder --win
构建:
```bash
npm run build
pnpm run build
```
测试:
```bash
npm test
pnpm test
```
最近一次核对结果:
最近一次核对结果(pnpm 迁移后):
- `npm run build` 可通过
- 构建阶段会出现少量 Vite 警告:部分模型库缩略图 URL 会保留到运行时解析,同时主包体积超过默认 chunk 警告阈值
- `npm test` 含时间轴插值、动作步态曲线、视频导出、姿势 / 动作面板交互等用例(397 个);剩余 `8` 个既有失败用例(模型库面板、视口画幅 / 轴向命中区、坐标输入拖柄、取景器缩放、个别姿势预设)保持不变,未引入回归
- `pnpm run build` 可通过(`tsc -b` 类型检查 + Vite 生产构建)
- `pnpm test`:**40 个测试文件全部通过,395 通过 / 3 跳过 / 0 失败**
- 构建阶段会出现 Vite 警告:模型库缩略图 URL 在构建期不存在(`模型库/` 是仓库外的外部资源目录),会保留到运行时解析;同时主包体积超过默认 chunk 警告阈值。两者都不影响构建结果
> 模型库说明:内置模型库读取的是项目**上一级**的 `模型库/` 目录(`import.meta.glob("../../../../模型库/**/*.fbx")`)。仓库不含该目录,因此模型库面板在纯净检出下为空——glob 匹配为空不会报错,属于预期行为。相关测试在目录缺失时会自动跳过。
## 开源说明