# 轻页 Studio 静态发布构建

应用版本：3.0.0。基础提交：42d8093。发布修改及精确内容以 release-manifest.json 和各下载包 SHA-256 为准。

## 应用

Node.js >=20.19.0，npm。解压 application-source.zip，然后在应用根目录运行：

```sh
npm ci --registry=https://registry.npmjs.org
npm run build
npm test
npm run serve
```

build 生成 dist；serve 只提供静态文件，默认 http://127.0.0.1:4173/。PDF 在浏览器 Worker 内处理，不上传。构建依赖由 package-lock.json 锁定；未修改的通用构建工具可从正规源安装。测试只使用包内合成文件，需要安装 Chrome 或 Playwright Chromium；本次发布准备不安装新工具。

## MuPDF.js / WASM

npm mupdf 固定 1.28.1，AGPL-3.0-or-later。对应官方 MuPDF 标签 1.28.1（提交 20061bd45183f5a2bff8f43675e4da91e5ac2901）；对应默认 WASM 构建的源码必须包括该标签固定、实际参与构建的第三方子模块，而非只下载 GitHub 自动标签 tarball 或 npm 二进制包。

官方 platform/wasm/tools/build.sh 使用 Emscripten 4.0.8，默认 BUILD=small，DEFINES=-DTOFU -DTOFU_CJK_EXT -DFZ_ENABLE_HYPHEN=0，FEATURES=brotli=no mujs=no extract=no xps=no svg=no。源码中保留 Makefile、接口 C/TS 源码、资源、第三方源码及其许可证。

在 Linux 环境安装上述 Emscripten、make、C 工具链、Node/npm（用户自行安装），设置 EMSDK，进入 platform/wasm 后运行 npm install 和 bash tools/build.sh；按官方 package.json 执行 tools/compress.sh。将生成包安装为应用的 mupdf 依赖，再运行 npm run build。官方 TypeScript/Terser依赖没有上游锁文件；可使用 package.json 中兼容版本（typescript5.8.3、terser5.39.2），记录实际安装版本，本包不声称与官方字节级相同。工具脚本本身会调用 emsdk install/activate 4.0.8；本次未执行，因为未获新工具安装授权。

从 npm 现有二进制重建应用已验证；从 C/TS 重新生成 WASM 尚未验证，不能声称位级可复现。实际重建是工程验证，不自动作为 AGPL 额外义务；发布前需要完整对应源码及依赖审计。最终清单 ready_for_publication 为 true，表示可交给部署线程；本脚本不执行部署。

## 分包

若完整源码包超过 EdgeOne 单文件 25MB，使用 20,000,000 字节分片；下载全部同名前缀分片，按文件名顺序连接成原 tar.gz，然后校验 SHA-256 再解压。分片属于同一个源码归档，不是独立可解压 ZIP。所有分片必须与网站同时发布、免费公开可访问，无需另购存储。

```sh
cat mupdf-source.tar.gz.part-* > mupdf-source.tar.gz
shasum -a 256 mupdf-source.tar.gz
```

## 重建源码下载页面/候选ZIP

应用构建不依赖Git。若还需要重新生成发布下载页面，解压MuPDF源码到 release-inputs/mupdf-1.28.1，然后运行 python3 scripts/prepare-edgeone.py。公开包无.git历史，依赖固定提交与原始核验报告保留于release-docs/DEPENDENCIES.json，源码文件SHA-256保留于清单。代码改动后须重新核查并更新报告，不能沿用旧检查结论宣称修改后的源码已核验。

最终交付状态：ready_for_publication=true，source_checks_complete=true，wasm_rebuilt=false，blockers=[]。旧暂停仅用于补齐前的候选包，已解除；没有执行腾讯云部署、DNS修改或仓库推送。
