vite-plugin-sw-offline 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +35 -32
  2. package/package.json +1 -1
  3. package/src/index.js +2 -12
package/README.md CHANGED
@@ -46,30 +46,31 @@ npm install vite-plugin-sw-offline -D
46
46
  npm install vite -D
47
47
  ```
48
48
 
49
- 本包为 **CommonJS**(`main` → `src/index.js`)。在 `vite.config.ts` 中可用 `createRequire`:
50
-
51
- ```js
52
- import { createRequire } from 'node:module';
53
- const require = createRequire(import.meta.url);
54
- const { vitePluginSwOffline } = require('vite-plugin-sw-offline');
55
- ```
49
+ 本包为 **CommonJS**(`main` → `src/index.js`),在 Vite 的 ESM 配置文件中可直接 `import` 使用。
56
50
 
57
51
  ## 快速接入
58
52
 
59
- ### 1. `vite.config.js`
53
+ ### 1. `vite.config.ts`
60
54
 
61
- ```js
62
- const { vitePluginSwOffline } = require('vite-plugin-sw-offline');
55
+ ```ts
56
+ import { defineConfig } from 'vite';
57
+ import { vitePluginSwOffline } from 'vite-plugin-sw-offline';
63
58
 
64
59
  export default defineConfig({
65
60
  plugins: [
66
61
  vitePluginSwOffline({
62
+ // 未传 CLI --outDir 时的构建产出目录(默认 dist)
67
63
  outDir: 'dist',
64
+ // 离线页 Logo,注入 __OFFLINE_LOGO__ 并参与 SW 预缓存
68
65
  offlineLogoPath: '/static/logos/your-logo.png',
66
+ // 离线页打字机展示的域名文案
69
67
  offlineDomain: 'https://www.example.com',
70
- cacheableApiPaths: ['/user/getUserInfo.do', '/config/queryConfig.do']
71
- // networkProbeUrl: () => '...', // 可选,见下文
72
- // serviceWorker: { apiTimeout: 45000 },
68
+ // 可走 SWR 的 API 路径白名单(pathname 包含即匹配);不传则为空
69
+ cacheableApiPaths: ['/user/getUserInfo.do', '/config/queryConfig.do'],
70
+ // 导航前外网探测 URL,空则探测同源 /sw.js;见「维护接口探测」
71
+ // networkProbeUrl: () => 'https://api.example.com/wh/maintain/checkMaintain?productCode=demo',
72
+ // SW 超时、缓存条数等,对应 sw.js 内 __SW_RT_*__ 占位符
73
+ // serviceWorker: { apiTimeout: 45000, networkProbeTimeout: 15000 },
73
74
  })
74
75
  ]
75
76
  });
@@ -82,6 +83,7 @@ export default defineConfig({
82
83
  在入口 HTML 引入注册脚本,并保留版本占位(构建时由插件替换):
83
84
 
84
85
  ```html
86
+ <!-- 构建时 __SW_REGISTER_VERSION__ 会替换为 swVersion,用于破坏 SW 脚本缓存 -->
85
87
  <script src="/sw-register.js?v=__SW_REGISTER_VERSION__"></script>
86
88
  ```
87
89
 
@@ -97,17 +99,17 @@ export const CACHEABLE_SW_API_PATHS = [
97
99
  ];
98
100
  ```
99
101
 
100
- 在 `vite.config.js` 中 `cacheableApiPaths: CACHEABLE_SW_API_PATHS` 传入。不传则使用插件内置示例列表(**生产务必改为自己的列表**)。
101
-
102
- ### 4. 本地 monorepo 引用
102
+ 在 `vite.config.ts` 中引入并传入:
103
103
 
104
- 未发布 npm 前可:
104
+ ```ts
105
+ import { CACHEABLE_SW_API_PATHS } from './src/configs/sw-cacheable-api-paths.js';
105
106
 
106
- ```js
107
- const { vitePluginSwOffline } = require('./packages/vite-plugin-sw-offline/src/index.js');
107
+ // vitePluginSwOffline({ ... }) 内
108
+ // 可缓存 API 路径白名单,与独立配置文件保持一致便于 Code Review
109
+ cacheableApiPaths: CACHEABLE_SW_API_PATHS,
108
110
  ```
109
111
 
110
- 发布后改为 `require('vite-plugin-sw-offline')`。
112
+ 不传则 API 白名单为空(不缓存任何 API,**生产务必显式配置自己的列表**)。
111
113
 
112
114
  ## 版本号(swVersion)
113
115
 
@@ -219,12 +221,13 @@ function buildSwNetworkProbeUrl(def, productCode) {
219
221
 
220
222
  ### 回调接入示例
221
223
 
222
- ```js
223
- const configEnv = require('./src/configs/env/xxx/yyy.js');
224
- const SERIES = require('./src/configs/series/...');
224
+ ```ts
225
+ import configEnv from './src/configs/env/xxx/yyy.js';
226
+ import SERIES from './src/configs/series/...';
225
227
 
228
+ // defineConfig plugins 内
226
229
  vitePluginSwOffline({
227
- networkProbeUrl: (ctx) => buildSwNetworkProbeUrl(configEnv.default, SERIES.name)
230
+ networkProbeUrl: () => buildSwNetworkProbeUrl(configEnv.default, SERIES.name),
228
231
  // networkProbeUrl: 'https://api.example.com/wh/maintain/checkMaintain?productCode=demo',
229
232
  });
230
233
  ```
@@ -265,7 +268,7 @@ vitePluginSwOffline({
265
268
  | `offlineLogoPath` | `string` | 离线页 `__OFFLINE_LOGO__` 与 SW 预缓存 Logo;支持 `https://`、根路径 `/`、`?v=`。 |
266
269
  | `offlineDomain` | `string` | 离线页打字机文案 `__OFFLINE_DOMAIN__`。 |
267
270
  | `offlineTemplatePath` | `string` | 自定义离线页 HTML(绝对路径或相对 `process.cwd()`)。不存在则回退默认模板。 |
268
- | `cacheableApiPaths` | `string[]` | API 路径白名单(pathname 包含即走 SWR)。不传用内置示例列表。 |
271
+ | `cacheableApiPaths` | `string[]` | API 路径白名单(pathname 包含即走 SWR)。不传则为空列表。 |
269
272
  | `robotsTxtContent` | `string` | 非空时覆盖产出目录 `robots.txt`。 |
270
273
  | `serviceWorker` | `object` | SW 数值参数,见下表。 |
271
274
 
@@ -283,8 +286,9 @@ vitePluginSwOffline({
283
286
 
284
287
  预览合并结果:
285
288
 
286
- ```js
287
- const { getDefaultServiceWorker, resolveServiceWorker } = require('vite-plugin-sw-offline');
289
+ ```ts
290
+ import { getDefaultServiceWorker, resolveServiceWorker } from 'vite-plugin-sw-offline';
291
+
288
292
  resolveServiceWorker({ serviceWorker: { apiTimeout: 5000 } });
289
293
  ```
290
294
 
@@ -327,8 +331,8 @@ resolveServiceWorker({ serviceWorker: { apiTimeout: 5000 } });
327
331
 
328
332
  ## 程序化导出
329
333
 
330
- ```js
331
- const {
334
+ ```ts
335
+ import {
332
336
  vitePluginSwOffline,
333
337
  getRuntimeDir,
334
338
  getDefaultOfflineTemplatePath,
@@ -338,7 +342,7 @@ const {
338
342
  resolveServiceWorker,
339
343
  normalizeOfflineLogoPath,
340
344
  injectOfflineHtml
341
- } = require('vite-plugin-sw-offline');
345
+ } from 'vite-plugin-sw-offline';
342
346
  ```
343
347
 
344
348
  | 导出 | 用途 |
@@ -347,7 +351,7 @@ const {
347
351
  | `getRuntimeDir()` | 包内 `runtime/` 绝对路径 |
348
352
  | `getDefaultOfflineTemplatePath()` | 默认离线页模板路径 |
349
353
  | `getDefaultOfflineBackgroundPath()` | 默认背景图路径 |
350
- | `getDefaultCacheableApiPaths()` | 内置 API 白名单副本 |
354
+ | `getDefaultCacheableApiPaths()` | 默认 API 白名单副本(空数组) |
351
355
  | `getDefaultServiceWorker()` | `serviceWorker` 默认值 |
352
356
  | `resolveServiceWorker(partial)` | 合并默认值 |
353
357
  | `normalizeOfflineLogoPath(raw)` | Logo 路径规范化 |
@@ -391,7 +395,6 @@ vite-plugin-sw-offline/
391
395
 
392
396
  ```bash
393
397
  npm login
394
- cd packages/vite-plugin-sw-offline
395
398
  npm pack --dry-run
396
399
  ```
397
400
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite-plugin-sw-offline",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Vite 插件:Service Worker、离线页模板与构建注入(适用于 Vite H5 / uni-app H5 等)",
5
5
  "main": "src/index.js",
6
6
  "files": [
package/src/index.js CHANGED
@@ -54,18 +54,8 @@ function injectOfflineHtml(content, swConfig) {
54
54
  return content;
55
55
  }
56
56
 
57
- /** 未传入 cacheableApiPaths 时使用的默认白名单(与历史 sw.js 一致) */
58
- const DEFAULT_CACHEABLE_API_PATHS = [
59
- '/config/keFu.do',
60
- '/config/queryConfig.do',
61
- '/config/queryQuestion.do',
62
- '/config/queryTradeZD.do',
63
- '/news/getNewsList.do',
64
- '/site/getBannerByPlat.do',
65
- '/user/position/list.do',
66
- '/stock/getStockSort.do',
67
- '/user/getUserInfo.do'
68
- ];
57
+ /** 未传入 cacheableApiPaths 时使用的默认白名单(空列表,由业务显式配置) */
58
+ const DEFAULT_CACHEABLE_API_PATHS = [];
69
59
 
70
60
  function resolveCacheableApiPaths(swConfig) {
71
61
  const p = swConfig && swConfig.cacheableApiPaths;