1.7 KiB
1.7 KiB
本地依赖策略
浏览器运行时禁止从 CDN、远程 ESM 或第三方脚本地址加载功能模块。依赖分为 三类:
| 类别 | 当前模块 | 本地实现 |
|---|---|---|
| 项目 vendored 运行时 | Three.js 0.185.1、OrbitControls、WebEngine glue/WASM | web/app/src/vendor/、web/app/public/vendor/ |
| WASM 构建压缩库 | zlib 1.3.1、zstd 1.5.7 | blender-5.2.0/extern/zlib/、blender-5.2.0/extern/zstd/,由 Web CMake 的本地静态 target 使用 |
| npm 构建依赖 | React、ReactDOM、Vite、TypeScript | web/package-lock.json 锁定,Vite 打入本地 dist/assets/index-*.js |
| 测试/工具依赖 | Playwright、ESLint、Emscripten | web/node_modules、系统 Emscripten 和本机 Chrome;不进入浏览器产物 |
tools/web/check-local-deps.sh 是发布前门禁:检查 runtime dependencies 在本地
安装、Three.js 没有回退到 npm runtime import、vendor 资源存在,并扫描源码和
dist/ 中的 CDN/远程 ESM 地址,同时按 engine-manifest.json 校验本地 WASM
SHA-256。npm registry 只发生在开发机首次安装阶段;发布/浏览器运行只提供
web/dist 的同源静态文件。离线开发需要预先保留 node_modules 或 npm
缓存,随后可用 npm ci --offline 重建,运行时不再访问 registry。
Blender Web CMake 不使用 ExternalProject、FetchContent 或构建时下载。zlib
和 zstd 的源码、许可证和 CMake 输入已放入 blender-5.2.0/extern/;浏览器只
加载 web_engine.js 与同源 web_engine.wasm,不加载 SQLite WASM、OCCT 或
任何远程模块。
可复现的离线检查命令:
cd web
npm ci --offline --ignore-scripts
npm run check:local-deps