{"id":18985271,"url":"https://github.com/emptydreams/swpp-backends","last_synced_at":"2025-08-17T20:09:20.374Z","repository":{"id":185485860,"uuid":"673409011","full_name":"EmptyDreams/swpp-backends","owner":"EmptyDreams","description":"Service Worker Plus Plus 后端的仓库。","archived":false,"fork":false,"pushed_at":"2025-04-06T05:24:29.000Z","size":740,"stargazers_count":25,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"v3","last_synced_at":"2025-07-03T23:36:03.354Z","etag":null,"topics":["npm","service-worker","serviceworker","sw"],"latest_commit_sha":null,"homepage":"https://swpp.kmar.top","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EmptyDreams.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-08-01T14:57:23.000Z","updated_at":"2025-06-06T12:04:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"8b736229-859c-4d91-a1f2-0410023fdc65","html_url":"https://github.com/EmptyDreams/swpp-backends","commit_stats":null,"previous_names":["emptydreams/swpp-backends"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/EmptyDreams/swpp-backends","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmptyDreams%2Fswpp-backends","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmptyDreams%2Fswpp-backends/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmptyDreams%2Fswpp-backends/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmptyDreams%2Fswpp-backends/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EmptyDreams","download_url":"https://codeload.github.com/EmptyDreams/swpp-backends/tar.gz/refs/heads/v3","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmptyDreams%2Fswpp-backends/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270899582,"owners_count":24664720,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-17T02:00:09.016Z","response_time":129,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["npm","service-worker","serviceworker","sw"],"created_at":"2024-11-08T16:25:23.246Z","updated_at":"2025-08-17T20:09:20.345Z","avatar_url":"https://github.com/EmptyDreams.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![swpp logo](./swpp.jpg)\n\n官方文档：[https://swpp.kmar.top/](https://swpp.kmar.top/)\n\n## 什么是 swpp\n\n\u0026emsp;\u0026emsp;swpp 是一个用于为网站快速生成一个高度可用的 [Service Worker](https://developer.mozilla.org/zh-CN/docs/Web/API/ServiceWorker) 的工具，旨在提高网站的可靠性、优化二次访问性能、提供离线浏览功能……\n\n\u0026emsp;\u0026emsp;常用 SW 构建工具的对比：\n\n|            | swpp@3 | swpp@2 | hexo-offline |\n|:----------:|:------:|:------:|:------------:|\n|    本地缓存    |   ✔️   |   ✔️   |      ✔️      |\n|   缓存增量更新   |   ✔️   |   ✔️   |      ❌       |\n|   缓存过期时间   |   ✔️   |   ❌    |      ✔️      |\n|   缓存大小限制   |   ❌    |   ❌    |      ✔️      |\n|    预缓存     |   ❌    |   ❌    |      ✔️      |\n| Request 篡改 |   ✔️   |   ✔️   |      ❌       |\n|   URL 竞速   |   ✔️   |   ✔️   |      ❌       |\n|   备用 URL   |   ✔️   |   ✔️   |      ❌       |\n|  204 阻塞响应  |   ✔️   |   ✔️   |      ❌       |\n|    逃生门     |   ✔️   |   ✔️   |      ❌       |\n|    请求合并    |   ❌    |   ✔️   |      ❌       |\n|    高度自由    |   ✔️   |   ✔️   |      ❌       |\n|     更新     |   活跃   |  停止维护  |   超过两年没有更新   |\n\n## swpp v2 与 v3 的区别\n\n\u0026emsp;\u0026emsp;swpp v3 对 swpp 的所有代码进行了完全的重构，现在代码逻辑更加的清晰。除了后台代码的差异，v3 还有以下一系列的改进：\n\n- 完全定制化\u003cbr/\u003e\n  现在您对 swpp 生成的 sw 拥有完全的控制权。在 v2 中，如果需要修改插件生成的 sw 的逻辑，您需要自行编写整个 sw 文件。\u003cbr/\u003e\n  v3 中将 sw 文件的各个部分拆分到了环境变量中，这使得您可以通过配置文件覆盖 sw 文件中的任意一个部分，或者追加任意内容。\n\n- 现代化配置\u003cbr/\u003e\n  现在您可以使用 `ts` 语言编写配置文件，同时还可以选择使用 `ESM`。在 v2 中您必须使用 `CommonJS`。\u003cbr/\u003e\n  同时使用内置的一系列 `define` 函数可以让您对配置的颗粒度进行更加完美的掌控。\n\n- 完善的类型\u003cbr/\u003e\n  现在 swpp 提供了更加优雅的数据类型，以优化编写配置项、二次开发时的体验。\n\n## 版本号\n\n\u0026emsp;\u0026emsp;目前 swpp v3 还在测试阶段，版本号全部采用 `3.0.0-alpha.\u003ca\u003e\u003cb\u003e\u003cc\u003e` 的格式：\n\n- `3.0.0` - 大版本号\n- `alpha` - 测试版本\n- `a` - 一级子版本号，变动时表明 API 或配置文件等内容发生了不向前兼容的变动\n- `b` - 二级子版本号，变动时表明添加了新的功能\n- `c` - 三级子版本号，变动时表明进行了漏洞修复\n\n\u0026emsp;\u0026emsp;当 `a` `b` `c` 的某一位达到两位数时，会在其中添加 `x` 表示分割。\n\n## QQ 群\n\n\u0026emsp;\u0026emsp;注意：swpp 有且仅有下面的群是官方的：\n\n![QQ 群：545028909](/qrcode.jpg)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femptydreams%2Fswpp-backends","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femptydreams%2Fswpp-backends","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femptydreams%2Fswpp-backends/lists"}