@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 +212 -236
- package/dist/index.d.mts +304 -67
- package/dist/index.d.ts +304 -67
- package/dist/index.js +314 -173
- package/dist/index.min.js +4 -4
- package/dist/index.min.mjs +4 -4
- package/dist/index.mjs +313 -168
- package/package.json +1 -1
- package/src/index.ts +13 -0
- package/src/proxy/apply-dev-cookie-header.ts +35 -5
- package/src/proxy/core.ts +198 -12
- package/src/proxy/index.ts +8 -3
- package/src/proxy/vite-middleware-plugin.ts +177 -0
- package/src/proxy/vue-proxy-config.ts +98 -18
- package/src/utils/cookie-reader.ts +74 -3
- package/src/utils/cookie-watcher.ts +50 -1
- package/src/utils/env-detector.ts +9 -2
- package/src/utils/index.ts +7 -0
- package/src/proxy/vite-adapter.ts +0 -98
- package/src/proxy/vite-cookie-plugin.ts +0 -94
- package/src/proxy/vite-plugin.ts +0 -66
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
|
|
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 {
|
|
116
|
+
import { viteMiddlewareProxy } from 'dev-proxy-cookie';
|
|
115
117
|
|
|
116
118
|
export default defineConfig({
|
|
117
119
|
plugins: [
|
|
118
|
-
|
|
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
|
-
'/
|
|
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
|
-
|
|
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
|
-
###
|
|
169
|
+
### 使用账号密码登录(禁用 Cookie 注入)
|
|
170
|
+
|
|
171
|
+
当需要使用账号密码登录时,设置 `useCookie: false`,避免覆盖浏览器的登录 Cookie:
|
|
164
172
|
|
|
165
173
|
```javascript
|
|
166
174
|
import { defineConfig } from 'vite';
|
|
167
|
-
import {
|
|
175
|
+
import { viteMiddlewareProxy } from 'dev-proxy-cookie';
|
|
168
176
|
|
|
169
177
|
export default defineConfig({
|
|
170
178
|
plugins: [
|
|
171
|
-
|
|
179
|
+
viteMiddlewareProxy({
|
|
172
180
|
cookieFile: './cookie.txt',
|
|
181
|
+
target: 'http://10.17.33.33',
|
|
182
|
+
useCookie: false, // 禁用 Cookie 注入,使用浏览器发送的 Cookie
|
|
173
183
|
debug: true,
|
|
174
|
-
|
|
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
|
-
####
|
|
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
|
|
280
|
+
Vite 中间件插件,自动配置代理和 Cookie 注入,兼容所有 Vite 版本。
|
|
297
281
|
|
|
298
282
|
**选项:**
|
|
299
283
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
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
|
-
|
|
437
|
-
├──
|
|
438
|
-
│ ├──
|
|
439
|
-
│ ├──
|
|
440
|
-
│ ├── vite-
|
|
441
|
-
│
|
|
442
|
-
|
|
443
|
-
│ ├──
|
|
444
|
-
│
|
|
445
|
-
|
|
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`
|
|
455
|
-
| `changeOrigin`
|
|
456
|
-
| `secure`
|
|
457
|
-
| `followRedirects`
|
|
458
|
-
| `autoRewrite`
|
|
459
|
-
| `protocolRewrite`
|
|
460
|
-
| `cookieDomainRewrite` | boolean/string/object | -
|
|
461
|
-
| `cookiePathRewrite`
|
|
462
|
-
| `headers`
|
|
463
|
-
| `logLevel`
|
|
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`
|
|
470
|
-
| `ignorePaths`
|
|
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
|
|
478
|
-
| `getCookie`
|
|
479
|
-
| `watch`
|
|
480
|
-
| `debug`
|
|
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 项目建议使用 `
|
|
487
|
-
4.
|
|
488
|
-
5.
|
|
489
|
-
6.
|
|
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 {
|
|
597
|
+
import { viteMiddlewareProxy } from 'dev-proxy-cookie';
|
|
524
598
|
|
|
525
599
|
export default defineConfig({
|
|
526
600
|
plugins: [
|
|
527
|
-
|
|
601
|
+
viteMiddlewareProxy({
|
|
528
602
|
cookieFile: './cookie.txt',
|
|
529
603
|
target: 'http://localhost:3000',
|
|
530
|
-
|
|
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
|
-
|
|
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
|
-
###
|
|
689
|
+
### 使用脚本发布(推荐)
|
|
693
690
|
|
|
694
|
-
|
|
691
|
+
```bash
|
|
692
|
+
# 自动化发布(含版本升级)
|
|
693
|
+
bash scripts/publish.sh
|
|
695
694
|
|
|
696
|
-
|
|
697
|
-
|
|
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
|
-
###
|
|
699
|
+
### 手动发布流程
|
|
709
700
|
|
|
710
|
-
|
|
701
|
+
```bash
|
|
702
|
+
# 1. 检查依赖和测试
|
|
703
|
+
npm install
|
|
704
|
+
npm run lint
|
|
705
|
+
npm test
|
|
711
706
|
|
|
712
|
-
|
|
713
|
-
|
|
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
|