# 工具

> PWA 构建依赖的 Service Worker 库、商店打包器与审计工具，附 2026-10 从各自文档读取的版本、要求与命令。

PWA 项目里反复出现四类工具：Service Worker 库、在构建期产出 manifest 与 worker 的插件、面向各商店的打包器，以及审计器。本页记录每种工具做什么、要求什么，以及核查本页时读到的版本；这是一份编辑性精选，没有付费位。

## 工作原理

本页没有哪项工具是发布 PWA 的必需品；手写的 manifest 加一个几十行的 Service Worker 就能满足 Chromium 的[可安装条件](/zh/compatibility/install-prompt/)。这些工具的作用是从构建产出这些文件、把结果装进商店包，以及检查产出。

### Service Worker 库与构建插件

[Workbox](https://developer.chrome.com/docs/workbox) 是 Google 为 Service Worker 路由与缓存提供的一组模块，以独立包发布（其中有 `workbox-window`、`workbox-streams`、`workbox-range-request`）。核查本页时的版本为 7.4.1，发布于 2026-05-05；7.0.0 把最低要求提高到 Node 16，7.3 与 7.4 两个版本自述为依赖更新。[Vite PWA](https://vite-pwa-org.netlify.app/)（`vite-plugin-pwa`，1.2.0，MIT）为 Vite 项目封装了 Workbox：自动注入 Web App Manifest、生成 Service Worker、在有新内容时重新加载，并提供 SvelteKit、VitePress、Astro、Nuxt 3、Remix 与 îles 的集成。生成式 worker 的代价是预缓存列表随每个带哈希的资源增长，大型构建会预缓存用户可能从不打开的文件。

### 面向 Google Play 的打包

[Bubblewrap](https://github.com/GoogleChromeLabs/bubblewrap) 是生成 Trusted Web Activity 项目的命令行工具；PWABuilder 的 Android 输出「powered by Bubblewrap and uses the same underlying core」。它要求 Node.js 14.15.0 及以上与 JDK 17，首次运行时提议下载 JDK 与 Android 命令行工具。关键命令：`init` 读取 Web manifest 并写出 `twa-manifest.json`；`build` 产出 `app-release-signed.apk` 与 `app-release-bundle.aab`；`update` 在编辑 manifest 后重新生成 Android 项目；`validate` 按 TWA 质量标准检查 PWA；`fingerprint generateAssetLinks` 写出要托管的 `assetlinks.json`；`doctor` 确认 JDK 与 SDK 的路径和版本。代价是一把要为上架条目终身保管的签名密钥，因为 asset links 的指纹由它派生。

### 面向 Microsoft Store 的打包

[PWABuilder](https://www.pwabuilder.com/) 是 Microsoft 文档记载的路径。流程及其英文界面标签：在 **Ship your PWA to app stores** 下输入 URL 并点击 **Start**；处理报告卡 **Action Items** 里的问题；点击 **Package For Stores**；在 **Windows** 下点击 **Generate Package**；在 **Windows Package Options** 中粘贴从 Partner Center 复制的 **Package ID**、**Publisher display name** 与 **Publisher ID**；点击 **Download Package**。下载得到一个 `.zip`，内含 `.msixbundle` 与 `.classic.appxbundle`，两者都在 Partner Center 提交流程的 **Packages** 步骤上传。manifest 变更需要重走流程；代码变更不需要。

### 审计

[Lighthouse](https://developer.chrome.com/docs/lighthouse/overview) 可在 DevTools 的 **Lighthouse** 面板运行，也可在 `npm install -g lighthouse` 后用命令行运行、作为 Node 模块接入 CI，或通过 PageSpeed Insights 运行，报告 Performance、Accessibility、Best Practices 与 SEO。它不再审计可安装性：12.0.0 版（2024-04-22）写明「As per Chrome's updated Installability Criteria, Lighthouse has removed the PWA category」，并把用户指向 DevTools 的 PWA 文档，所以 manifest 与 Service Worker 的检查落在 DevTools > Application。Bubblewrap 的 `validate` 命令是剩下的那个自动核对 PWA 是否满足 Trusted Web Activity 标准的检查。

| 工具 | 角色 | 读取到的版本 | 要求 |
|---|---|---|---|
| Workbox | Service Worker 路由与缓存 | 7.4.1（2026-05-05） | 构建工具需 Node 16 及以上 |
| Vite PWA | 构建期生成 manifest 与 worker | 1.2.0 | Vite |
| Bubblewrap | TWA 项目生成与签名 | CLI README，2026-10 | Node.js 14.15.0 及以上、JDK 17 |
| PWABuilder | 从 URL 生成商店包 | 网页应用，2026-10 | Partner Center 身份信息 |
| Lighthouse | 性能、可访问性、最佳实践、SEO 审计 | 12.0.0 移除 PWA 类别 | Chrome，或命令行所需的 Node |

## 实测行为

:::observed
PWABuilder 报告卡通过后，点击 **Package For Stores** 会弹出一个写着「Awesome! Your PWA is store ready!」的对话框（英文界面）；随后的 Windows 下载是一个 `.zip`，内含一个 `.msixbundle` 文件与一个 `.classic.appxbundle` 文件，Partner Center 的 **Packages** 步骤在同一次提交中接受两者（Microsoft Learn，「Publish a PWA to the Microsoft Store」，2026-09-02 更新）。
:::

## 另请参阅

- [Workbox](https://developer.chrome.com/docs/workbox)（developer.chrome.com）
- [Bubblewrap CLI](https://github.com/GoogleChromeLabs/bubblewrap/blob/main/packages/cli/README.md)（github.com）
- [Lighthouse v12.0.0 release notes](https://github.com/GoogleChrome/lighthouse/releases/tag/v12.0.0)（github.com）
- [分发](/zh/ecosystem/distribution/)
- [商店政策](/zh/ecosystem/stores/)
- [Service Worker 参考](/zh/reference/service-worker/)
- [缓存策略](/zh/guides/offline/caching-strategies/)

← 返回[生态](/zh/ecosystem/)总览。