@gylautorun/dev-proxy-cookie 1.0.1 → 1.0.3

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.
package/README.md CHANGED
@@ -1,15 +1,15 @@
1
1
  # dev-proxy-cookie
2
2
 
3
- 开发环境代理 Cookie 注入工具,支持文件监听自动重载和自动代理。
3
+ 开发环境代理 Cookie 注入工具,支持文件监听自动重载和自动代理。兼容 Vue CLI 和所有版本的 Vite。
4
4
 
5
5
  ## 功能特性
6
6
 
7
7
  - 🚀 **Vue CLI 兼容**:提供 `createVueProxyConfig`,完美兼容 vue.config.js 的代理配置方式
8
- - ⚡ **Vite 插件支持**:开箱即用的 Vite 插件,支持自动代理所有请求
8
+ - ⚡ **Vite 插件支持**:开箱即用的 Vite 中间件插件,兼容所有 Vite 版本(2.x/3.x/4.x/5.x)
9
9
  - 📁 **Cookie 文件监听**:监听 Cookie 文件变化,实时更新请求,无需重启服务器
10
10
  - 🎯 **自动代理**:可选的自动代理所有请求功能,无需手动配置每个路径
11
11
  - 🔄 **双向模式**:支持白名单模式(`includePaths`)和黑名单模式(`ignorePaths`)
12
- - 🔌 **钩子函数**:支持 `onProxyReq`、`onProxyRes`、`onError`、`onWsError` 等钩子
12
+ - 🔌 **钩子函数**:支持 `onProxyReq`、`onProxyRes`、`onError` 等钩子
13
13
  - ⚙️ **代理配置**:支持 `ws`、`changeOrigin`、`secure`、`followRedirects` 等完整代理选项
14
14
  - 🛠️ **工具类**:提供 `CookieReader` 和 `CookieWatcher` 基础工具类
15
15
 
@@ -69,13 +69,13 @@ module.exports = {
69
69
  ws: true,
70
70
  changeOrigin: true,
71
71
  secure: false,
72
-
72
+
73
73
  // 白名单模式 - 只代理这些路径
74
74
  // includePaths: ['/api/', '/cas/', '/examine/'],
75
-
75
+
76
76
  // 黑名单模式 - 忽略这些路径
77
77
  ignorePaths: ['/assets/', '/img/', '/public/', '/favicon.ico'],
78
-
78
+
79
79
  // 额外的代理配置(优先级最高)
80
80
  additionalProxies: {
81
81
  '/mock/': {
@@ -83,13 +83,13 @@ module.exports = {
83
83
  changeOrigin: true,
84
84
  },
85
85
  },
86
-
86
+
87
87
  // 自定义请求头
88
88
  headers: {
89
89
  host: '10.17.33.33',
90
90
  origin: 'http://10.17.33.33',
91
91
  },
92
-
92
+
93
93
  // 钩子函数
94
94
  hooks: {
95
95
  onProxyReq: (proxyReq, req, res) => {
@@ -107,39 +107,48 @@ module.exports = {
107
107
  };
108
108
  ```
109
109
 
110
- ### Vite 项目 (vite.config.js) - 自动代理
110
+ ### Vite 项目 (vite.config.js) - 自动代理(推荐)
111
+
112
+ 使用 `viteMiddlewareProxy` 插件,兼容所有 Vite 版本:
111
113
 
112
114
  ```javascript
113
115
  import { defineConfig } from 'vite';
114
- import { viteAutoProxyCookie } from 'dev-proxy-cookie';
116
+ import { viteMiddlewareProxy } from 'dev-proxy-cookie';
115
117
 
116
118
  export default defineConfig({
117
119
  plugins: [
118
- viteAutoProxyCookie({
120
+ viteMiddlewareProxy({
119
121
  // 必需配置
120
122
  cookieFile: './cookie.txt',
121
123
  target: 'http://10.17.33.33',
122
-
124
+
123
125
  // 调试模式
124
126
  debug: true,
125
-
126
- // Cookie变化时自动重启开发服务器(需要外部脚本配合)
127
- autoRestart: true,
128
-
127
+
129
128
  // WebSocket 支持
130
129
  ws: true,
131
130
  changeOrigin: true,
132
131
  secure: false,
133
132
  followRedirects: true,
134
-
135
- // 自定义代理映射
133
+
134
+ // 自定义代理映射(优先级最高)
136
135
  proxyMap: {
137
- '/mock/': 'http://localhost:3000',
136
+ '/digital-platform': 'http://223.4.72.251:8816/',
137
+ '/robot': 'https://oapi.dingtalk.com/',
138
+ '/irs-assessments/api/zbdf': 'http://10.249.160.193:8003',
138
139
  },
139
-
140
- // 忽略的路径
141
- ignorePaths: ['/assets/', '/img/', '/public/'],
142
-
140
+
141
+ // 默认代理路径(代理到 target)
142
+ proxyPaths: [
143
+ '/irs-assessments/api',
144
+ '/irs-file/api',
145
+ '/irs-admin/api',
146
+ '/api',
147
+ ],
148
+
149
+ // 忽略的路径(不代理)
150
+ ignorePaths: ['/assets/', '/img/', '/public/', '/src/'],
151
+
143
152
  // 钩子函数
144
153
  hooks: {
145
154
  onProxyReq: (proxyReq, req, res) => {
@@ -151,29 +160,28 @@ export default defineConfig({
151
160
  onError: (err, req, res) => {
152
161
  console.error('[Proxy] Error:', err.message);
153
162
  },
154
- onWsError: (err, req, socket) => {
155
- console.error('[Proxy] WebSocket Error:', err.message);
156
- },
157
163
  },
158
164
  }),
159
165
  ],
160
166
  });
161
167
  ```
162
168
 
163
- ### Vite 项目 (vite.config.js) - 基础 Cookie 注入
169
+ ### 使用账号密码登录(禁用 Cookie 注入)
170
+
171
+ 当需要使用账号密码登录时,设置 `useCookie: false`,避免覆盖浏览器的登录 Cookie:
164
172
 
165
173
  ```javascript
166
174
  import { defineConfig } from 'vite';
167
- import { viteDevProxyCookie } from 'dev-proxy-cookie';
175
+ import { viteMiddlewareProxy } from 'dev-proxy-cookie';
168
176
 
169
177
  export default defineConfig({
170
178
  plugins: [
171
- viteDevProxyCookie({
179
+ viteMiddlewareProxy({
172
180
  cookieFile: './cookie.txt',
181
+ target: 'http://10.17.33.33',
182
+ useCookie: false, // 禁用 Cookie 注入,使用浏览器发送的 Cookie
173
183
  debug: true,
174
- onCookieChange: (cookie) => {
175
- console.log('Cookie updated:', cookie);
176
- },
184
+ proxyPaths: ['/api'],
177
185
  }),
178
186
  ],
179
187
  });
@@ -267,47 +275,31 @@ isDev (最高) → watch (中等) → 智能检测 (最低)
267
275
 
268
276
  ### Vite 相关
269
277
 
270
- #### viteAutoProxyCookie(options)
271
-
272
- Vite 插件,自动配置代理和 Cookie 注入。
273
-
274
- **选项:**
275
-
276
- - `cookieFile` (string): Cookie 文件路径(必需)
277
- - `target` (string): 默认代理目标(必需)
278
- - `debug` (boolean): 是否开启调试日志,默认 `false`
279
- - `autoRestart` (boolean): 是否启用自动重启标记,默认 `true`
280
- - `restartMarkerFile` (string): 重启标记文件路径,默认 `.cookie-restart-marker`
281
- - `ws` (boolean): WebSocket 支持,默认 `true`
282
- - `changeOrigin` (boolean): 是否改变请求来源,默认 `true`
283
- - `secure` (boolean): 是否验证 SSL 证书,默认 `false`
284
- - `followRedirects` (boolean): 是否跟随重定向,默认 `true`
285
- - `proxyMap` (object): 特定路径映射
286
- - `includePaths` (string[]): 只代理这些路径
287
- - `ignorePaths` (array): 忽略的路径
288
- - `hooks` (object): 钩子函数配置
289
- - `isDev` (boolean): 是否为开发环境(优先级最高)
290
- - 设置此参数后,将直接决定是否启用文件监听
291
- - `true`: 启用监听(开发模式)
292
- - `false`: 禁用监听(生产模式)
293
-
294
- #### viteDevProxyCookie(options)
278
+ #### viteMiddlewareProxy(options)
295
279
 
296
- Vite 插件,基础 Cookie 注入功能。
280
+ Vite 中间件插件,自动配置代理和 Cookie 注入,兼容所有 Vite 版本。
297
281
 
298
282
  **选项:**
299
283
 
300
- - `cookieFile` (string): Cookie 文件路径(必需)
301
- - `debug` (boolean): 是否开启调试日志,默认 `false`
302
- - `onCookieChange` ((cookie: string) => void): Cookie 变化回调
303
- - `watch` (boolean | 'auto'): 是否监听文件变化,默认 `'auto'`
304
- - `true`: 始终监听
305
- - `false`: 从不监听
306
- - `'auto'`: 根据环境自动判断(默认)
307
- - `isDev` (boolean): 是否为开发环境(优先级最高)
308
- - 设置此参数后,将直接决定是否启用文件监听
309
- - `true`: 启用监听(开发模式)
310
- - `false`: 禁用监听(生产模式)
284
+ | 选项 | 类型 | 默认值 | 说明 |
285
+ |------|------|--------|------|
286
+ | `cookieFile` | string | - | Cookie 文件路径(必需) |
287
+ | `target` | string | - | 默认代理目标(必需) |
288
+ | `debug` | boolean | false | 是否开启调试日志 |
289
+ | `ws` | boolean | true | WebSocket 支持 |
290
+ | `changeOrigin` | boolean | true | 是否改变请求来源 |
291
+ | `secure` | boolean | false | 是否验证 SSL 证书 |
292
+ | `followRedirects` | boolean | true | 是否跟随重定向 |
293
+ | `proxyMap` | object | {} | 特定路径映射(优先级最高) |
294
+ | `proxyPaths` | string[] | [] | 默认代理路径列表 |
295
+ | `ignorePaths` | string[] | [] | 忽略的路径 |
296
+ | `hooks` | object | {} | 钩子函数配置 |
297
+
298
+ **路径匹配优先级:**
299
+
300
+ 1. `proxyMap` - 自定义路径映射(最高优先级)
301
+ 2. `proxyPaths` - 默认代理路径
302
+ 3. `ignorePaths` - 忽略路径(不代理)
311
303
 
312
304
  ### 工具类
313
305
 
@@ -384,12 +376,6 @@ hooks: {
384
376
  res.writeHead(503, { 'Content-Type': 'text/plain' });
385
377
  res.end('Proxy error');
386
378
  },
387
-
388
- // WebSocket 错误时触发
389
- onWsError: (err, req, socket) => {
390
- console.error('[Proxy] WebSocket Error:', err.message);
391
- socket.close();
392
- },
393
379
  }
394
380
  ```
395
381
 
@@ -433,61 +419,150 @@ dos-session-id=YWQxMWUwMTktZjI4Yi00NzNmLTkzOTItMWFmMzBiZTYzZTBm
433
419
  ## 项目结构
434
420
 
435
421
  ```
436
- src/
437
- ├── proxy/ # 代理模块
438
- │ ├── core.ts # 代理核心逻辑
439
- │ ├── vite-plugin.ts # Vite自动代理插件
440
- │ ├── vite-cookie-plugin.ts # Vite Cookie插件
441
- └── webpack-plugin.ts # Webpack代理配置
442
- ├── utils/ # 工具模块
443
- │ ├── cookie-reader.ts # Cookie读取器(支持注释过滤)
444
- └── cookie-watcher.ts # Cookie文件监听
445
- └── index.ts # 主导出
422
+ dev-proxy-cookie/
423
+ ├── src/
424
+ │ ├── proxy/
425
+ ├── core.ts # 代理核心逻辑
426
+ ├── vite-middleware-plugin.ts # Vite 中间件插件(兼容所有版本)
427
+ │ ├── vue-proxy-config.ts # Vue CLI 代理配置
428
+ │ │ └── index.ts # 代理模块导出
429
+ │ ├── utils/
430
+ │ ├── cookie-reader.ts # Cookie 文件读取器
431
+ │ │ ├── cookie-watcher.ts # Cookie 文件监听器
432
+ │ │ ├── env-detector.ts # 环境检测工具
433
+ │ │ └── index.ts # 工具模块导出
434
+ │ └── index.ts # 主导出
435
+ ├── scripts/ # 脚本工具
436
+ │ ├── publish.sh # 自动化发布脚本(含版本升级)
437
+ │ ├── publish-check.sh # 检查构建发布脚本(不修改版本)
438
+ │ └── bump-version.js # 版本升级工具
439
+ ├── demo/ # 示例项目
440
+ │ └── vite-demo/ # Vite 示例
441
+ ├── docs/ # 文档
442
+ ├── __tests__/ # 测试用例
443
+ └── package.json
444
+ ```
445
+
446
+ ## 脚本工具
447
+
448
+ ### scripts/publish.sh
449
+
450
+ **功能**:自动化发布脚本,包含版本升级功能
451
+
452
+ **特点**:
453
+ - 完整的前置检查(npm 登录、git 分支、依赖、测试、构建)
454
+ - 支持多种版本升级类型(patch/minor/major/beta/alpha/自定义)
455
+ - 支持测试环境和正式环境发布
456
+ - 自动创建 git tag
457
+
458
+ **使用方式**:
459
+
460
+ ```bash
461
+ # 直接运行,按提示操作
462
+ bash scripts/publish.sh
463
+
464
+ # 流程:
465
+ # 1. 检查命令 → 检查 npm 登录 → 检查 git 分支 → 检查 git 状态
466
+ # 2. 检查依赖 → 运行类型检查 → 运行测试
467
+ # 3. 选择版本升级类型 → 执行构建 → 确认发布
468
+ # 4. 可选:先发布到测试环境 → 发布到正式环境
469
+ ```
470
+
471
+ **版本升级选项**:
472
+
473
+ | 选项 | 说明 | 示例 |
474
+ |------|------|------|
475
+ | 1) patch | 修复 bug | 1.0.1 → 1.0.2 |
476
+ | 2) minor | 添加新功能 | 1.0.1 → 1.1.0 |
477
+ | 3) major | 重大变更/不兼容 | 1.0.1 → 2.0.0 |
478
+ | 4) beta | Beta 测试版 | 1.0.1 → 1.0.2-beta.1 |
479
+ | 5) alpha | Alpha 测试版 | 1.0.1 → 1.0.2-alpha.1 |
480
+ | 6) 自定义 | 手动指定版本号 | 任意格式 |
481
+
482
+ ### scripts/publish-check.sh
483
+
484
+ **功能**:检查构建发布脚本,**不修改版本号**
485
+
486
+ **适用场景**:
487
+ - 重新发布已有版本
488
+ - 测试环境验证
489
+ - CI/CD 自动化流程
490
+
491
+ **使用方式**:
492
+
493
+ ```bash
494
+ # 默认发布到 latest 标签
495
+ bash scripts/publish-check.sh
496
+
497
+ # 指定发布标签
498
+ bash scripts/publish-check.sh beta
499
+ bash scripts/publish-check.sh test
500
+ ```
501
+
502
+ **流程**:
503
+
504
+ ```
505
+ 检查命令 → 检查 npm 登录 → 检查 git 分支 → 检查 git 状态
506
+ → 检查依赖 → 运行类型检查 → 运行测试 → 执行构建 → 确认发布
507
+ ```
508
+
509
+ ### scripts/bump-version.js
510
+
511
+ **功能**:独立的版本升级工具
512
+
513
+ **使用方式**:
514
+
515
+ ```bash
516
+ # 使用 npm 脚本
517
+ npm run bump:patch # 升级 patch 版本
518
+ npm run bump:minor # 升级 minor 版本
519
+ npm run bump:major # 升级 major 版本
520
+ npm run bump:beta # 升级 beta 版本
521
+ npm run bump:alpha # 升级 alpha 版本
446
522
  ```
447
523
 
448
524
  ## 配置选项汇总
449
525
 
450
526
  ### 代理服务器配置
451
527
 
452
- | 选项 | 类型 | 默认值 | 说明 |
453
- | ----------------------- | --------------------- | ------ | ---------------------- |
454
- | `ws` | boolean | false | WebSocket 支持 |
455
- | `changeOrigin` | boolean | true | 是否改变请求来源 |
456
- | `secure` | boolean | false | 是否验证 SSL 证书 |
457
- | `followRedirects` | boolean | true | 是否跟随重定向 |
458
- | `autoRewrite` | boolean | false | 自动重写路径 |
459
- | `protocolRewrite` | string | - | 协议重写(http/https) |
460
- | `cookieDomainRewrite` | boolean/string/object | - | Cookie 域名重写 |
461
- | `cookiePathRewrite` | boolean/string/object | - | Cookie 路径重写 |
462
- | `headers` | object | - | 自定义请求头 |
463
- | `logLevel` | string | 'info' | 日志级别 |
528
+ | 选项 | 类型 | 默认值 | 说明 |
529
+ |------|------|--------|------|
530
+ | `ws` | boolean | false | WebSocket 支持 |
531
+ | `changeOrigin` | boolean | true | 是否改变请求来源 |
532
+ | `secure` | boolean | false | 是否验证 SSL 证书 |
533
+ | `followRedirects` | boolean | true | 是否跟随重定向 |
534
+ | `autoRewrite` | boolean | false | 自动重写路径 |
535
+ | `protocolRewrite` | string | - | 协议重写(http/https) |
536
+ | `cookieDomainRewrite` | boolean/string/object | - | Cookie 域名重写 |
537
+ | `cookiePathRewrite` | boolean/string/object | - | Cookie 路径重写 |
538
+ | `headers` | object | - | 自定义请求头 |
539
+ | `logLevel` | string | 'info' | 日志级别 |
464
540
 
465
541
  ### 路径过滤配置
466
542
 
467
- | 选项 | 类型 | 说明 |
468
- | ------------------------------------ | -------- | -------------------------- |
469
- | `includePaths` | string[] | 白名单模式,只代理这些路径 |
470
- | `ignorePaths` | string[] | 黑名单模式,忽略这些路径 |
471
- | `proxyMap` / `additionalProxies` | object | 额外代理配置,优先级最高 |
543
+ | 选项 | 类型 | 说明 |
544
+ |------|------|------|
545
+ | `includePaths` | string[] | 白名单模式,只代理这些路径 |
546
+ | `ignorePaths` | string[] | 黑名单模式,忽略这些路径 |
547
+ | `proxyMap` / `additionalProxies` | object | 额外代理配置,优先级最高 |
472
548
 
473
549
  ### Cookie 配置
474
550
 
475
- | 选项 | 类型 | 默认值 | 说明 |
476
- | -------------- | -------- | ------ | ---------------- |
477
- | `cookieFile` | string | - | Cookie 文件路径 |
478
- | `getCookie` | function | - | Cookie 获取函数 |
479
- | `watch` | boolean | false | 是否监听文件变化 |
480
- | `debug` | boolean | false | 是否输出调试日志 |
551
+ | 选项 | 类型 | 默认值 | 说明 |
552
+ |------|------|--------|------|
553
+ | `cookieFile` | string | - | Cookie 文件路径 |
554
+ | `getCookie` | function | - | Cookie 获取函数 |
555
+ | `watch` | boolean | false | 是否监听文件变化 |
556
+ | `debug` | boolean | false | 是否输出调试日志 |
481
557
 
482
558
  ## 注意事项
483
559
 
484
560
  1. **Cookie 文件变化**:Cookie 文件变化后,代理会立即使用新的 Cookie,无需重启服务器
485
561
  2. **Git 忽略**:建议将 Cookie 文件添加到 `.gitignore`
486
- 3. **Vue CLI vs Vite**:Vue CLI 项目建议使用 `createVueProxyConfig` 或 `createAutoProxyConfig`,Vite 项目建议使用 `viteAutoProxyCookie`
487
- 4. **自动重启**:`autoRestart` 选项会在 Cookie 变化时写入标记文件,需要外部脚本配合检测重启
488
- 5. **路径优先级**:`includePaths` `ignorePaths` 不能同时生效,`includePaths` 优先
489
- 6. **代理映射优先级**:`proxyMap`(Vite)或 `additionalProxies`(Vue CLI)中的路径不受 `includePaths`/`ignorePaths` 限制
490
- 7. **Cookie 格式**:支持单行和多行格式,多行格式支持注释(以 `#` 开头)
562
+ 3. **Vue CLI vs Vite**:Vue CLI 项目建议使用 `createVueProxyConfig` 或 `createAutoProxyConfig`,Vite 项目建议使用 `viteMiddlewareProxy`
563
+ 4. **路径优先级**:`includePaths` `ignorePaths` 不能同时生效,`includePaths` 优先
564
+ 5. **代理映射优先级**:`proxyMap`(Vite)或 `additionalProxies`(Vue CLI)中的路径不受 `includePaths`/`ignorePaths` 限制
565
+ 6. **Cookie 格式**:支持单行和多行格式,多行格式支持注释(以 `#` 开头)
491
566
 
492
567
  ## 最佳实践
493
568
 
@@ -501,7 +576,6 @@ xxx-session-id=def456
501
576
 
502
577
  // .gitignore - 忽略敏感文件
503
578
  cookie.txt
504
- .cookie-restart-marker
505
579
 
506
580
  // vue.config.js - Vue CLI 项目配置
507
581
  const { createAutoProxyConfig, createFileCookieGetter } = require('dev-proxy-cookie');
@@ -520,14 +594,14 @@ module.exports = {
520
594
  };
521
595
 
522
596
  // vite.config.js - Vite 项目配置
523
- import { viteAutoProxyCookie } from 'dev-proxy-cookie';
597
+ import { viteMiddlewareProxy } from 'dev-proxy-cookie';
524
598
 
525
599
  export default defineConfig({
526
600
  plugins: [
527
- viteAutoProxyCookie({
601
+ viteMiddlewareProxy({
528
602
  cookieFile: './cookie.txt',
529
603
  target: 'http://localhost:3000',
530
- isDev: process.env.NODE_ENV === 'development', // 显式指定环境
604
+ proxyPaths: ['/api', '/cas'],
531
605
  ignorePaths: ['/assets/', '/public/'],
532
606
  }),
533
607
  ],
@@ -563,15 +637,6 @@ const getCookie = createFileCookieGetter('./cookie.txt', {
563
637
  });
564
638
  ```
565
639
 
566
- **自动检测(默认行为)**
567
-
568
- ```javascript
569
- const getCookie = createFileCookieGetter('./cookie.txt', {
570
- watch: 'auto', // 默认值,自动判断环境
571
- debug: true,
572
- });
573
- ```
574
-
575
640
  ## 常见问题
576
641
 
577
642
  ### Q: Cookie 文件修改后没有生效?
@@ -606,20 +671,8 @@ A: 这是由于文件监听器在生产环境下仍然运行导致的。解决
606
671
  **方案一:使用 `isDev` 参数(推荐)**
607
672
 
608
673
  ```javascript
609
- // Vue CLI 项目
610
674
  const getCookie = createFileCookieGetter('./cookie.txt', {
611
675
  isDev: process.env.NODE_ENV === 'development',
612
- debug: true,
613
- });
614
-
615
- // Vite 项目
616
- export default defineConfig({
617
- plugins: [
618
- viteDevProxyCookie({
619
- cookieFile: './cookie.txt',
620
- isDev: process.env.NODE_ENV === 'development',
621
- }),
622
- ],
623
676
  });
624
677
  ```
625
678
 
@@ -627,117 +680,40 @@ export default defineConfig({
627
680
 
628
681
  ```javascript
629
682
  const getCookie = createFileCookieGetter('./cookie.txt', {
630
- watch: false, // 禁用文件监听
631
- });
632
- ```
633
-
634
- **方案三:使用智能检测(默认行为)**
635
-
636
- ```javascript
637
- const getCookie = createFileCookieGetter('./cookie.txt', {
638
- watch: 'auto', // 默认值,自动判断环境
639
- });
640
- ```
641
-
642
- 智能检测会检查以下环境变量:
643
-
644
- - `NODE_ENV`、`BUILD_MODE`、`VUE_APP_ENV`、`VITE_NODE_ENV` 等
645
- - CI/CD 环境标识(`CI`)
646
- - npm 生命周期事件(如 `build`)
647
- - 进程参数(如 `--mode=production`)
648
-
649
- ### Q: 如何在预发布环境(staging/uat)启用文件监听?
650
-
651
- A: 预发布环境通常需要调试,建议显式设置 `isDev: true`:
652
-
653
- ```javascript
654
- const getCookie = createFileCookieGetter('./cookie.txt', {
655
- isDev: true, // 强制启用监听
656
- debug: true,
657
- });
658
- ```
659
-
660
- 或者使用 `watch: true`:
661
-
662
- ```javascript
663
- const getCookie = createFileCookieGetter('./cookie.txt', {
664
- watch: true, // 始终监听
665
- debug: true,
683
+ watch: false,
666
684
  });
667
685
  ```
668
686
 
669
- ### Q: `isDev`、`watch` 和智能检测的优先级是什么?
670
-
671
- A: 优先级从高到低:
672
-
673
- ```
674
- isDev (最高) → watch (中等) → 智能检测 (最低)
675
- ```
676
-
677
- - 如果设置了 `isDev`,直接使用该值
678
- - 如果 `isDev` 未设置但 `watch` 为 `true` 或 `false`,使用 `watch` 值
679
- - 如果都未设置或 `watch` 为 `'auto'`,使用智能检测
680
-
681
- ### Q: 如何自定义生产环境检测?
682
-
683
- A: 使用 `productionEnvs` 参数:
684
-
685
- ```javascript
686
- const getCookie = createFileCookieGetter('./cookie.txt', {
687
- productionEnvs: ['MY_APP_ENV', 'BUILD_TYPE'], // 自定义环境变量
688
- debug: true,
689
- });
690
- ```
687
+ ## 发布流程
691
688
 
692
- ### Q: ESLint 报错 `import/no-extraneous-dependencies`?
689
+ ### 使用脚本发布(推荐)
693
690
 
694
- A: 确保在 `.eslintrc.js` 中正确配置:
691
+ ```bash
692
+ # 自动化发布(含版本升级)
693
+ bash scripts/publish.sh
695
694
 
696
- ```javascript
697
- module.exports = {
698
- // ...
699
- rules: {
700
- 'import/no-extraneous-dependencies': ['error', {
701
- devDependencies: true,
702
- optionalDependencies: false,
703
- }],
704
- },
705
- };
695
+ # 检查构建发布(不修改版本)
696
+ bash scripts/publish-check.sh [tag]
706
697
  ```
707
698
 
708
- ### Q: 如何查看当前环境检测的详细信息?
699
+ ### 手动发布流程
709
700
 
710
- A: 启用 `debug: true` 选项:
701
+ ```bash
702
+ # 1. 检查依赖和测试
703
+ npm install
704
+ npm run lint
705
+ npm test
711
706
 
712
- ```javascript
713
- const getCookie = createFileCookieGetter('./cookie.txt', {
714
- watch: 'auto',
715
- debug: true, // 输出环境检测日志
716
- });
717
- ```
707
+ # 2. 升级版本
708
+ npm version patch # minor/major
718
709
 
719
- 控制台会输出类似信息:
710
+ # 3. 构建
711
+ npm run build
720
712
 
713
+ # 4. 发布
714
+ npm publish
721
715
  ```
722
- [env-detector] Auto-detected production mode - disabling watch
723
- ```
724
-
725
-
726
-
727
- ```
728
- [env-detector] Auto-detected development mode - enabling watch
729
- ```
730
-
731
- ## 发布流程
732
-
733
- 完整的发布流程文档请查看:[docs/release.md](docs/release.md)
734
-
735
- ## 问题排查
736
-
737
- ### 构建进程不退出问题
738
-
739
- 如果遇到构建完成后进程不退出的问题,请查看详细解决方案:[docs/build-hang-issue.md](docs/build-hang-issue.md)
740
716
 
741
717
  ## License
742
718
 
743
- MIT License
719
+ MIT License